¿Cómo obtener la longitud real y total de char * (matriz de caracteres)?

Parachar [], Puedo fácilmente obtener su longitud por:

char a[] = "aaaaa";
int length = sizeof(a)/sizeof(char); // length=6

Sin embargo, no puedo hacer esto para obtener la longitud de unchar * por:

char *a = new char[10];
int length = sizeof(a)/sizeof(char);

porque sé,a Aquí hay un puntero, tal quelength aqui siempre sera4 (o algo distinto en diferentes sistemas).

Mi pregunta es que ¿cómo puedo obtener la longitud de unchar * ¿después?Sé que alguien puede desafiarme que ya sabes que es10 porque acabas de crearlo. Quiero saber esto porque este paso para obtener su longitud puede venir muy lejos de su creación y no quiero regresar mucho para verificar este número. Además, también quiero saber su longitud real.

Para ser más especifico

¿Cómo puedo obtener su reallength=5?¿Cómo puedo obtener su total?length=10?

para el siguiente ejemplo:

char *a = new char[10]; 
strcpy(a, "hello");

Respuestas a la pregunta(15)

Su respuesta a la pregunta