Est std::vector mémoire libérée sur une nette?

Supposons que j'ai un std::vector de structures. Qu'advient-il de la mémoire si le vecteur est clear()'d?

std::vector<myStruct> vecs;
vecs.resize(10000);
vecs.clear();

La mémoire sera libérée, ou encore attachés à l'vec variable comme une réutilisables tampon?

  • Essayez d'appeler capacity().
  • Merci à tous. Je veux la mémoire pour être libéré de la garantie. J'ai donc allouer le vecteur à l'aide de nouvelles std:vector<myStruct>, puis appeler delete quand je suis fait. Donc la mémoire de la garantie d'être libéré.
  • le seul effet de l'allocation dynamique est d'introduire une ineffiency. voir jerry réponse à, d'une manière raisonnable à vide d'un vecteur. dans un corps de boucle un autre bon moyen est de faire juste le vecteur local pour le corps de la boucle, c'est à dire de le déclarer à l'intérieur du corps de la boucle.
  • Juste pour l'intérêt, pourquoi ne le mémoire doivent être garantis libre?
  • Parce que c'est ios opération et que je suis en train d'économiser de la mémoire sur la plate-forme.
InformationsquelleAutor | 2012-12-19