Je sais qu'un pointeur invalide conduit à un comportement indéfini mais comment savoir si un pointeur est valide ou non?Comment free() 'savoir' que le pointeur passé est valide?
Y a-t-il une sorte de somme de contrôle au début de chaque bloc dans la liste libre? quelque chose comme:
if((*ptr) == 'CHECKSUM'))
free
else
do something undefined
Habituellement, il ne sait pas, et vient de se bloquer (ou corrompt quelque chose). –
Trouver la réponse à votre question ici http://stackoverflow.com/questions/1119134/how-do-malloc-and-free-work – Viswesn
Il n'a pas à savoir. Tout le point est qu'il est permis de supposer que l'argument est soit nul (dans ce cas, il ne fait rien) ou un pointeur vers un objet obtenu par (ou comme si par) «malloc». –