Указатель на Вектор указателей - PullRequest
0 голосов
/ 07 марта 2012

Я нахожусь в процессе изменения кода, написанного кем-то другим. В одной части кода они использовали указатель на вектор указателей.

            class2 *pointofclass2 = new class2();

        class1 * pointofclass1 = new class1(.....)

        pointofclass2->push_back(pointofclass1);

Потом код

    delete pointofclass2;

Теперь я думаю, что это вызывает утечку памяти. Я никогда не сталкивался с этим раньше, поэтому не уверен, является ли это причиной или нет? Любая помощь будет принята с благодарностью. Если да, то как правильно освободить память?

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Если элементы, добавленные через push_back(), не уничтожены в class2, это утечка.

1 голос
/ 07 марта 2012

Вы удаляете pointofclass2, но, вероятно, не удаляете вектор, который содержит указатели class1 в деструкторе class1. Где объект, созданный в новом class1 (...), удаляется? Это C ++, автоматическая сборка мусора отсутствует.

Теперь, если class2 - это вектор, на самом деле не нужно для создания указателя на него, поскольку векторы все равно будут выделять память в куче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...