Comment libérer de la mémoire de la dynamique de la structure de la matrice de

Comme quelqu'un qui n'a jamais traité avec la libération de la mémoire et ainsi de suite, j'ai eu la tâche de créer un tableau dynamique de la structure et de créer des fonctions pour ajouter ou supprimer des éléments d'un tableau. Lors de la suppression, j'ai pour libérer de la mémoire qui n'est plus nécessaire.

lors de la suppression de la 2e élément d'un tableau de la taille de 3, je déplace le 3ème élément de la 2ème position et ensuite supprimer le dernier. Lors de la suppression de la dernière, je reçois toujours une erreur... il y a quelqu'un qui peut trouver une solution pour moi?

struct myFriend {
    myFriend() {
        number=0;
        hobbys = new char*[10];
    }
    int number;
    char* name;
    char** hobbys;
};
int main() {
    myFriend* friendList = new myFriend[10];

    myFriend* tempFriend = new myFriend;
    tempFriend->number=1;
    tempFriend->name = "ABC";

    myFriend* tempFriend2 = new myFriend;
    tempFriend2->number=2;
    tempFriend->name = "XYZ";

    myFriend* tempFriend3 = new myFriend;
    tempFriend3->number=3;
    tempFriend3->name = "123";

    friendList[0] = *tempFriend;
    friendList[1] = *tempFriend2;
    friendList[2] = *tempFriend3;

    friendList[1] = friendList[2]; //move 3rd element on 2nd position
    delete &(friendList[2]); //and delete 3rd element to free memory
}
  • Vous devez utiliser std::vector et std::string à la place.
  • Pour la tâche, il est dit d'utiliser des tableaux de char. Mais peut-être que cela va changer. Néanmoins ce n'est pas la solution au vrai problème 🙁 😉
  • Vous devez garder une trace de chaque pointeur retourné à partir de new et delete il exactement une fois. Vous devez également garder une trace de chaque pointeur retourné à partir de new [] et l'utilisation delete[] sur le pointeur exactement une fois. Devinez pourquoi nous aimons vecteur et de la chaîne de mieux!
InformationsquelleAutor Sebastian | 2011-04-22