Bonjour,
je suis confronté à un problème pour lequel je ne trouve pas de solution. Je n'arrive pas à détruire un pointeur.
Voici un exemple très simplifié:
J'obtiens un seg fault. Je pense que le problème vient du fait qu'à la sortie de la boucle, pointeur pointe sur une zone extérieure à la déclaration par le malloc. Donc le free fait le seg fault. En fait, il faudrait que je récupère l'adresse initiale afin de pouvoir faire le free().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int * pointeur = (int *) malloc(X * sizeof(int)); for() { // Il y a des conditions qui font que la boucle for exécute plus que // X itérations mais la ligne suivante est appelée excatement X fois *pointeur++ = ...; } free(pointeur);
Cepedant, je ne sais pas comment faire cela, sans faire un:
avant le free.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for() { // X fois pointeur--; }
Merci d'avance pour votre aide.
Partager