 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Bruno Causse Guest
|
Posted: Tue Apr 10, 2007 12:38 am Post subject: [stl] |
|
|
bonjour,
j'ai deux vector d'objet de meme nature
vector< A > x;
vector< A > y;
..../...
les vector x et y; sont remplis
..../...
x = y;
les anciens objets de x sont ils liberés? (ou ai je une fuite?)
merci |
|
| Back to top |
|
 |
Franck Branjonneau Guest
|
Posted: Tue Apr 10, 2007 4:12 pm Post subject: Re: [stl] |
|
|
"Bruno Causse" <bcausse (AT) lepoint (DOT) tm.fr> écrivait:
| Quote: | vector< A > x;
vector< A > y;
x = y;
les anciens objets de x sont ils liberés? (ou ai je une fuite?)
|
Il sont libérés.
--
Franck Branjonneau |
|
| Back to top |
|
 |
Sébastien Guérif Guest
|
Posted: Wed Apr 11, 2007 3:33 am Post subject: Re: [stl] |
|
|
Bruno Causse a écrit :
| Quote: | vector< A > x;
vector< A > y;
.../...
// les vector x et y; sont remplis
.../...
x = y;
les anciens objets de x sont ils liberés? (ou ai je une fuite?)
|
Les objets de x sont détruits et la mémoire qui eur était allouée
estlibérée ssi le destructeur de la classe libère correctement la
mémoire allouée dynamiquement (en cas d'usage direct ou indirect de "new")
Hope this helps!
Sébastien |
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Wed Apr 11, 2007 9:12 am Post subject: Re: [stl] |
|
|
On Apr 9, 9:38 pm, "Bruno Causse" <bcau...@lepoint.tm.fr> wrote:
| Quote: | j'ai deux vector d'objet de meme nature
vector< A > x;
vector< A > y;
.../...
les vector x et y; sont remplis
.../...
x = y;
les anciens objets de x sont ils liberés? (ou ai je une fuite?)
|
Libérés dans quel sens ? Dans une implémentation « normale »,
je crois, beaucoup va dépendre des tailles rélatives des deux
vecteurs, ainsi que la capacité d'x. Grosso modo, ce auquel je
m'attendrais, c'est que si x.capacity() < y.size(), les
min(x.size(),y.size()) éléments seront affectés ; s'il en reste
des éléments en x, ils seront détruit (appel du destructeur),
tandis que s'il en reste dans y, ils seront copié (appel du
constructeur de copie). Tant que la capacité de x suffit
(qu'elle est inférieur à la taille de y), en revanche, la
bibliothèque n'a pas le droit de libérer.
Si en revanche la capacité d'x ne suffit pas, oui, tous les
destructeurs des éléments d'x seront appelés, la mémoire
libérée, et ensuite un nouveau bloc, plus grand, alloué, et les
éléments y copiés.
Ensuite, évidemment, c'est à toi d'écire le constructeur de
copie, l'opérateur d'affectation et le destructeur qu'il faut.
--
James Kanze (GABI Software) email:james.kanze (AT) gmail (DOT) com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34 |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|