Bonjour,
Je suis sur mac et je compile dans l'invit de commande avec le compilateur de Xcode.
J'ai abordé les pointeurs récemment et j'ai rencontré des problèmes étranges.
J'ai créé une fonction simple pour vous illustrer le problème; quand j'alloue dans une fonction un pointeur, celui-ci n'a pas la même adresse quand je sors dans ma fonction.
Et voici le résultat compilé ainsi que le message d'erreur sur le terminal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <stdio.h> #include <stdlib.h> int test(int* pntr) { pntr = malloc(sizeof(int)); *pntr = 34; printf("\n%p\n%d", pntr, *pntr); return 0; } int main() { int* pntr; test(pntr); printf("\n%p\n%d", pntr, *pntr); free(pntr); }
0x7f8be2c04be0
34
0x7fff62a93036
az.sh(771,0x7fff7f62d300) malloc: *** error for object 0x7fff62a93036: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
-125990072Abort trap: 6
J'obtiens deux adresses mémoires différentes…
J'ai soumis le problème à mon prof de C qui n'a pas trouvé et a un moment pensé qu'il y avait un garbage collector mais dans un compilateur de C c'est absurde.. Je suis perdu et sans solutions.
Merci de votre aide,
Cordialement.
Partager