begin process at 2012 05 30 11:15:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Realloc


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Realloc

samedi 9 septembre 2006 à 20:08:34 | Realloc

Mastersam

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]
samedi 9 septembre 2006 à 20:44:28 | Re : Realloc

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
C'est évident que ptr = realloc(ptr,newsize); est mauvais car tu risque de perdre la valeur de ptr. Iil faut utiliser une variable temporaire, comme tu le proposes ensuite

_____________________________________
Un éditeur de ressources gratuit pour Windows

samedi 9 septembre 2006 à 21:04:08 | Re : Realloc

Mastersam

Merci, c'est bien ce que je me disais, c'est pourtant inquiétant car on trouve très souvent ptr = realloc(ptr,newsize); dans les exemples de codes. Donc j'avais un gros doute.



[url="http://www.rc-bot.com"][img]http://www.rc-bot.com/bannieres/banniere468x60.jpg[/img][/url]
samedi 9 septembre 2006 à 21:39:36 | Re : Realloc

vecchio56

Administrateur CodeS-SourceS
Souvent aussi on ne vérifie pas le retour de malloc par exemple
Là c'est un peu la même chose, on suppose que ca va marcher, et on peut se permettre de le faire quand la zone de mémoire manipulée est petite

_____________________________________
Un éditeur de ressources gratuit pour Windows

dimanche 10 septembre 2006 à 09:06:14 | Re : Realloc

Mastersam

Oui mais même étant petite si on ne vérifier pas le retour, il se peut que l'adresse ai bougée, donc ptr ne pointera plus sur notre nouvelle zone ?



dimanche 10 septembre 2006 à 19:39:02 | Re : Realloc

NitRic

que ce soit une allocation de 1 ou 10,000 octet(s), il faut vérifier, on ne sait jamais ce qui peut arriver

~(.:: NitRic ::.)~


Cette discussion est classée dans : ptr, mémoire, déj, realloc, newsize


Répondre à ce message

Sujets en rapport avec ce message

Pointeur qui fait planter Windows !!! [ par coyito ] Salutquand je défini moi même une addresse pour un pointeur (exemple pour lire n'importe ou dans la mémoire) j'ai une erreur windows "access violation Segmenter un fichier en mémoire C (seulement) [ par golum ] Voila pour ouvrir a partir de mon prog c un fichier de 20 Mo je met 1min et j'aimerais a tout pris diminuer ce temps.Est-il possible de segmenter le f Structures, pointeurs, malloc et realloc reunis !! :) [ par mindark ] Alors la, je suis completement coulé !Voila mon probleme :J'ai une tableau "grid" qui est un tableau de structures "cell" :struct cell {bool bloquant; plusieur fenetre mais une seule en mémoire... [ par Xs ] Bon, voila.Quand je fais une nouvelle fenetre avec un code ressemblant a ca : hwnd = CreateDialog(...);ShowWindow(hwnd,SW_SHOW);......bon, et bien il pb mémoire [ par MELISA ] Bonjour à tous,Voici mon pb: lorsque j'exécute mon projet, à un moment donné l'erreur suivante s'affiche: "L'instruction à "0x5f41194f" emploie l'adre La valeur 26=0x1A pose un problème de lecture de fichier [ par sengr ] Salut!Jsuis en stage et jsuis pas un AS du dévelopement et ca URGE!J'ai rencontré un BIG problème : le coup du de la valeur 26=0x1A avec les fonctions Mémoire partgé [ par Sade ] Salut tous le monde,Je souhaiterai partger un espace mémoire (la même adresse), entre plusieur programme distinct fonctionnent sur le même PC.comment pb de pointeur sur la mémoire de la carte vidéo [ par NeoFab ] Salut à tous!J'étudie en ce moment la programmation en C sous Turbo c++ pour faire du graphisme, en écrivant directement dans la mémoire de la carte v Exploitation de fichier en C ?!?!?! [ par GazGaz ] lu allalors voila le truc c'est que je voudrais aller chercher des infos dans un fichier qui est structuré de la meme maniere lignes apres lignes. Je Codage du JPEG en mémoire [ par Subarufr ] Je réalise comme projet d'informatique un prgm de stéganographi (cryptage par l'image) j'aimerais donc savoir comment un codé un fichier JPEG en mémoi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales