Con instrucciones de C no se puede (sizeof(ptr) te dará el hueco ocupado por el puntero, no por lo apuntado por él).
Una vez oí que en C++ la dimensión se guarda un entero antes al comienzo del hueco reservado para el programador. Pero eso dependerá del compilador, supongo, y nunca lo he probado. Además, no es muy aconsejable utilizar esas cosas en el propio programa, es mejor almacenar ese tipo de información en otras variables, si es que son necesarias.