J'ai essayé le code suivant afin de voir comment obtenir la taille des données d'un pointeur:Lit 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 la sortie de code 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 donner les sizeof les données à l'intérieur de la * test_char_ptr. Mais au lieu de cela, il m'a donné 1, ce qui je pense que c'est le sizeof char au lieu des données. La même chose est pour le test_int_ptr. Longue histoire courte, ma question est de savoir comment puis-je obtenir les données sizeof dans un pointeur ou un tableau alloué dynamiquement de la mémoire.
Depuis votre modification pour modifier la ligne strlen(), je pense que la sortie ne correspond plus. –
Ok, j'ai mis à jour la sortie. – systemsfault
duplicata possible de [Comment trouver le sizeof (un pointeur pointant vers un tableau)] (http://stackoverflow.com/questions/492384/how-to-find-the-sizeofa-pointer-pointing-to-an- array) – outis