C++ pointeur non valide erreur

Je suis invalide point d'erreur dans le code ci-dessous je ne vois pas pourquoi. Tout ce que je suis en train de faire est de supprimer la gratuit de certaines chaînes sur le tas à partir d'un vecteur:

void func() {
    vector<string>* vec = new vector<string>;
    vec->push_back(*(new string("1")));
    vec->push_back(*(new string("2")));

    for(vector<string>::iterator itr = vec->begin(); itr != vec->end(); ++itr)
    {
        string* ptr = &(*itr);
        delete(ptr);
    }
}

MODIFIER: est-ce parce que push_back crée une copie de la chaîne?

vec->push_back(*(new string("1"))); = fuite de mémoire
parce que push_back() crée une copie et les feuilles de la chaîne sur le tas de référence, correct?
Si vraiment vous voulez allouer sur le tas, plus sûrs à utiliser les boost.org/doc/libs/1_35_0/libs/ptr_container/doc/...
correct

OriginalL'auteur user1861088 | 2013-02-22