Удалить динамически выделенную память формы std :: map - PullRequest
0 голосов
/ 19 октября 2011

У меня есть карта std::map< string,A* > MyMap, здесь A - класс; его объект создан с использованием «new» и вставлен в карту следующим образом:

MyMap["first"] = new A();
MyMap["second"] = new A();     // second step
MyMap["third"] = new A();

Таким образом, я вставляю динамически созданный объект в массив с каждые 5 секунд. Через некоторое время я хочу освободить память, созданную с помощью «new», я не хочу удалять все элементы. Я хочу освободить только несколько предметов с карты. Возможно ли удалить только память, занятую определенными предметами? (Например, я хочу удалить только пространство, занятое для объекта A, созданного на втором шаге.

1 Ответ

1 голос
/ 19 октября 2011

Определенно.Сначала получите указатель или ссылку на объект, который вы хотите удалить.Затем удалите его с карты с помощью map.erase ().Теперь объект удерживается только указателем или ссылкой, поэтому вы можете освободить его память, используя delete.

...