[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] C++ / C re-question



addon a la chose:

meme le compilos me previends: return a local variable, se qui me pousse a
me dire que c'est pas tres juste... Maintenant, supposons que je declare la
chaine sur le heap par un new... Vu que c'est un operator de casting, je ne
vois pas quand la memoire sera desalouée si on:
strncpy(stringA, (char*)pMachin,10);

??

JeF
----- Original Message -----
From: "JeF Dive" <jef@linuxbe.org>
To: <linux@lists.linuxbe.org>
Sent: jeudi 12 juillet 2001 10:50
Subject: [linux] C++ / C re-question


> Salut a tuti,
>
> Je me posais une chtite question en cpp: Lorsque je definis ceci:
>
> class machin {
>
> private:
>
> public:
>
>     operator char* ();
>
> };
>
> machin::operator char* () {
>  char buf[10];
>  sprintf(buf, etc..)
>  return buf;
> }
>
>
> (ceci est tiré du cours de Cpp de Vilvens) ..
>
> Je me suis toujours dis que les variables declarées dans une fonction le
> sont sur le stack (ben j'en suis certain, sinon, pas de buffer overflow
..),
> donc cette chaine de caractere est bel et bien definie sur le stack et au
> retour de la fonction, cette valeur ne devrait plus etre valide ... si
> j'avais aloué sur le heap par un new, ca serait ok; mais la ....
>
> kkun peut m'expliquer ca ?
>
> Merci
>
> JeF
>
>
> [ Soyez précis dans vos sujets svp afin de déterminer directement  ]
> [ le type de demande...                                            ]
> [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
> [ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]
>


[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]