C++ Vecteurs et les Fuites de Mémoire

J'ai lu quelque part il y a quelque temps que vecteurs provoquer des fuites de mémoire en fonction de la façon dont ils sont utilisés, mais j'aimerais demander, juste pour être sûr:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

int main()
{
    vector<somePtr*> listPtrs;

    return 0;
    //Detects memory leaks
}

Et ce n'est pas détecter quoi que ce soit:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

int main()
{
    {
        vector<somePtr*> listPtrs;
    }

    return 0;
    //No memory leaks detected
}

Les objets sont supprimés de l'vecteurs avant d'effacer les pointeurs.
Je pense que je me souviens avoir lu que les vecteurs et des listes et des autres mst conteneurs sont automatiquement supprimés après le bloc ils sont, donc dans l'exemple 1-je obtenir de la fuite de mémoire en raison de la fuite de mémoire fonction est appelée avant que le bloc se termine, de sorte que le vecteur est toujours en vie et à l'origine.

Je ne suis pas sûr à ce sujet, il a été un certain temps depuis que je crois que j'ai lu cela, et je ne pouvais trouver des questions à propos des objets n'étant pas supprimé, juste des pointeurs de les retirer.

Est-ce vrai? Et vais-je avoir des fuites de mémoire, si j'utilise une classe globale qui contient les vecteurs et des listes?

std::vector ne pas provoquer des fuites de mémoire, négligent les programmeurs n'.
Vous devez également inclure un exemple qui en fait présente le problème que vous rencontrez, y compris les appels à la CRT de débogage de l'API. Il ya une bonne possibilité que vous êtes qui interprètent mal les fuites basée sur le moment où ils sont déclarés.
Il n'y a pas de fuites de mémoire dans les échantillons que vous avez indiqué.

OriginalL'auteur Danicco | 2013-08-05