Bonjour à tous.
Je suis actuellement en train d'essayer d'assoir mes bases en programmation en C et j'ai une question à laquelle je ne parviens pas à trouver une réponse.
Voilà, je m'intéresse en ce moment à l'allocation dynamique de mémoire. Pour tester cela j'écris simplement des petits programmes du style:
Très simple donc.Code:int variable = 0; printf("%d", sizeof(variable));
Maintenant je veux tester un peu la même chose avec un tableau auquel j'alloue de la mémoire de manière dynamique.
Ce que je pense avoir fais:Code:int* tableau = NULL; printf("tableau: %d octets\n", sizeof(tableau)); int entrees = 0; //En vue de controler le nombre d'entrées dans le tableau scanf("%d", entrees);// On connait à présent le nombre d'entrées dans le tableau //allocation de la mémoire au tableau tableau = malloc(entrees * sizeof(int)); if(tableau == NULL) {exit (0);} printf("tableau: %d octets\n", sizeof(tableau)); free(tableau);
1. Créer un pointeur sur un entier (mémoire = 4 octets) (c'est mon tableau)
2. Créer une variable entrees que l'utilisateur renseigne
3. Allouer de la mémoire en fonction des entrées (nombre d'entrées x 4).
Or ce n'est pas ce que j'observe à l'exécution où les deux sizeof(tableau) renvoient 4. Pourquoi?
Cordialement,
piwi
Or quand je teste la mémoire allouée à tableau au début et à la fin du code, elle vaut toujours 4.
-----