Apres "free(a)", ca pointe toujours vers les données - C - Programmation
Marsh Posté le 08-08-2013 à 10:59:33
C'est un comportement indéfini. Tu utilises de la mémoire qui n'est plus allouée, tu n'as pas de garantie sur ce qu'elle peut contenir, donc ca peut te donner n'importe quel comportement, y compris quelque chose qui semble parfois valide ou presque.
Marsh Posté le 08-08-2013 à 13:19:00
Notons au passage que la modification du contenu de la mémoire après un "free" peut être vue comme une perte de temps (il suffit simplement de marquer la zone comme disponible pour le système), et ce n'est donc pas choquant que le système s'autorise à ne rien faire, ou à avoir un comportement différent en "débug" ou en "release", comme c'est le cas avec Visual C++, sauf erreur de ma part (idem lors de l'allocation, d'ailleurs).
Marsh Posté le 08-08-2013 à 10:38:41
J'ai du mal à comprendre pourquoi un pointeur vers une structure que j'ai définie et créée avec malloc(), pointe toujours vers des données aprés avoir utilisé free():
Si ma structure ne contient que des int ca marche, par contre le char* reste et n'est pas réinitialisé...