OK, merci! Je m'endormirai ce soir un peu monis bête.
Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
-------------------------------
Réponse au message :
-------------------------------
> buf ne disparait pas, ce n'est pas une variable locale mais une allocation dynamique, ne pas confondre.
> Une variable globale est un espace sur la stack alors evidemment en sortie une fonction replace ESP et donc pointeur memoire invalide.
> Allocation reserve sur le HEAP du processus et ne se perd donc pas mais par contre il faut absolument penser a desallouer.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut BruNews, y a pas un blème dans fonctio()? buff est local et donc disparait a la fin de fonction(). Les données sont donc perdues (du moins jusqu'a un autre ecriture)...
> >
> > Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
> > a+
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > char* fonction()
> > > {
> > > char* buf = (char*) malloc(MAX_BUF);
> > > return buf;
> > > }
> > >
> > > void MyFunc()
> > > {
> > > char* szTemp;
> > > szTemp=fonction();
> > > free(szTemp);
> > > }
> > >
> > > BruNews, ciao...
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Euh, je mets delete [] koi?
> > > > delete []szTemp? (impossible -> erreur)
> > > > delete []buf? (impossible car variable local a function())
> > > > Pourrais-tu m'expliquer un peu plus precisment ce que je dois faire et ou?
> > > > Bye,Xentor609
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > mets le delete dans MyFunc(), ou est le prob ?
> > > > > doit etre du genre delete [].
> > > > > tu peux employer malloc car ce n'est pas une classe, aucun constructeur a appeler.
> > > > > BruNews, ciao...
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Salut,
> > > > > > Voici le code qui me pose un pitit probleme:
> > > > > >
> > > > > > char* fonction() > > > > > > { > > > > > > char* buf=new char[MAX_BUF]; > > > > > > //traitement du buf > > > > > > return buf; > > > > > > } > > > > > > void MyFunc() > > > > > > { > > > > > > char* szTemp; > > > > > > szTemp=fonction(); > > > > > > //traitement sur szTemp > > > > > > //Il faudrait libere la memoire ici > > > > > > } > > > > > > |
> > > > > >
> > > > > > Bien entendu il manque un "delete".
> > > > > > Je ne peux pas mettre un "delete" avant le return buf(dans char* function()) (evidemment) sinon szTemp serait vide.
> > > > > > donc, il faudrait que je puisse "deleter" l'espace allouée par buf apres avoir fini mon traitement sur szTemp.
> > > > > > Je ne peux bien evidemment pas faire un delete szTemp,
> > > > > > donc je voudrais savoir comment je pourrais liberer l'espace memoire allouée?
> > > > > > Bye,Xentor609
> > > > >
> > > >
> > >
> >
>