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é:

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);
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().

Cepedant, je ne sais pas comment faire cela, sans faire un:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
for() {
    // X fois
    pointeur--;
}
avant le free.

Merci d'avance pour votre aide.