L'obtention de la taille des données d'un Pointeur

J'ai essayé le code suivant afin de voir comment obtenir la taille des données d'un pointeur:

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>

 int main(){
  char *test_char_ptr = "This is just a test";
  int *test_int_ptr = (int *) malloc(16*sizeof(int));
  for(int i = 0; i<16; i++){
    test_int_ptr[i] = i;
  }
  printf("%s\n",test_char_ptr);
  printf("Test char 1: %d\n", (int)sizeof test_char_ptr );
  printf("Test char 2:%d\n", (int)sizeof *test_char_ptr );
  printf("Test char 3: %d\n", (int)((strlen(test_char_ptr)+1) * sizeof(char)));
  printf("Test int 1:%d\n", (int)sizeof test_int_ptr );
  printf("Test int 2:%d\n", (int)sizeof *test_int_ptr );
  return EXIT_SUCCESS;
 }

Et le code de sortie est(Sur 32 bits gcc 4.3):

This is just a test
Test char 1: 4
Test char 2:1
Test char 3: 20
Test int 1:4
Test int 2:4

Je pensais que sizeof(*test_char_ptr) me donnerait la sizeof les données à l'intérieur de l' *test_char_ptr. Mais au lieu de cela il m'a donné 1 , je pense que c'est le sizeof char à la place des données. La même chose est pour le test_int_ptr. Longue histoire courte, ma question est comment puis-je obtenir le sizeof données à l'intérieur d'un pointeur ou dynamiquement de la mémoire allouée tableau.

InformationsquelleAutor systemsfault | 2009-10-15