Libération de la mémoire allouée au préalable avec la fonction malloc. [Résolu]

Signaler
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
-
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
-
Bonjour.

J'ai une question à propos de la libération de mémoire allouée au préalable avec la fonction malloc.

Si j'alloue une chaîne de caractères ainsi :
char *szv = (char *)malloc(200*sizeof(char));

et que par la suite je décale son pointeur comme cela :
szv+=3;

est-ce que lors de la libération de la mémoire allouée je dois faire :
free(szv-3);

ou dois-je faire tout simplement free(szv) ?

En espérant une réponse de votre part, je vous en remercie d'avance.

Greg.

2 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Il faut faire free(szv-3); comme tu l'as dit en premier lieux. Un conseil si tu dois décaler ton pointeur de la sorte : créé un second pointeur pointant vers la même zone mémoire mais que tu ne modifiera pas, comme ça tu garde dans un coin l'addresse à passer à free :

  char *szv = (char *)malloc(200*sizeof(char));
  char *plop = szv;

  szv += 3; /* toutes les modifs que tu veux */
  free(plop);
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
3
D'accord, je vais faire comme ça.

Merci beaucoup.