Bonjour j'ai une question qui peut paraitre bête au premier abord mais au fond c'est peut-être pas si ... évident.
voilà lors d'un realloc du type :
ptr = realloc(ptr,newsize);
si j'ai déjà quelquechose dans ptr, mais que je n'ai pas assez de mémoire pour le realloc, alors on me dit : realloc retourne un pointeur NULL. Donc je perd ce qui est déjà pointé par ptr puisque ptr=NULL. Hors la référence de realloc me dit aussi que l'objet pointé par ptr reste inchangé si la fonction échoue. du coup il semble trainer quelquepart en mémoire une zone allouée mais plus personne pour pointer dessus.
Si on fait juste realloc(ptr,newsize) je ne pense pas que ptr ai la bonne adresse si il y a eu changement de place, donc je ne vois qu'une méthode pour être sur de garder les données si ça ne peut pas être réalloué :
void *tmp
tmp=realloc(ptr,newsize);
if(tmp!=NULL)ptr=tmp;
est-ce que quelqu'un a déjà eu les mêmes doutes que moi ? Et est-ce que mes déductions sont correctes ?
Merci d'avance
Sam
[url="http://www.rc-bot.com"][img]http://www.rc-bot.com/bannieres/banniere468x60.jpg[/img][/url]