Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[stl]

3 réponses
Avatar
Bruno Causse
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

3 réponses

Avatar
Franck Branjonneau
"Bruno Causse" écrivait:

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

Avatar
Sébastien Guérif
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

Avatar
James Kanze
On Apr 9, 9:38 pm, "Bruno Causse" wrote:

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:
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