Page 1 sur 1

Bug étrange en C avec des pointeurs sous Linux

Publié : dim. janv. 26, 2025 3:58 am
par seb.r
Help ! Mon programme segfault aléatoirement quand je free un double pointeur. Sous Windows ça marche, sous Ubuntu ça plante. Code : 'int** tab = malloc(100*sizeof(int*));' puis plus tard free(tab)...

Re: Bug étrange en C avec des pointeurs sous Linux

Publié : dim. janv. 26, 2025 4:58 am
par le_zed38
Tu initialises bien tous les int* après le premier malloc ? Linux est moins tolérant que Windows sur l'accès à de la mémoire non initialisée.

Re: Bug étrange en C avec des pointeurs sous Linux

Publié : dim. janv. 26, 2025 6:58 am
par seb.r
Non justement, j'alloue que les sous-tableaux dont j'ai besoin. C'est ça le problème ?

Re: Bug étrange en C avec des pointeurs sous Linux

Publié : dim. janv. 26, 2025 9:58 am
par david.l
Exact ! Quand tu free, glibc vérifie plus de choses sous Linux. Soit tu initialises tout à NULL, soit utilise calloc au lieu de malloc pour le tableau principal.

Re: Bug étrange en C avec des pointeurs sous Linux

Publié : dim. janv. 26, 2025 10:58 am
par seb.r
Le calloc a réglé le problème ! Merci beaucoup. Je me coucherai moins bête ce soir.

Re: Bug étrange en C avec des pointeurs sous Linux

Publié : dim. janv. 26, 2025 3:58 pm
par flo_net
Petit + : valgrind est ton ami pour ce genre de soucis. Ça t'aurait direct pointé l'erreur.