c++ - 从 std::map 中删除动态分配的内存

标签 c++ dynamic stdmap

我有一张 map std::map< string,A* > MyMap , 这里 A 是一个类;它的对象是使用“new”创建的,并像这样插入到 map 中,

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

像这样,我每 5 秒将动态创建的 A 对象插入到数组中。过了一段时间我想释放使用"new"创建的内存我不想删除所有项目。我只想从 map 中释放一些项目。是否可以只删除特定项目占用的内存? (例如,我只想删除在第二步中创建的 A 对象占用的空间。

最佳答案

当然。首先,获取指向要删除的对象的指针或引用。然后,使用 map.erase() 将其从 map 中取出。现在,该对象仅保留您的指针或引用,因此您可以使用 delete 释放其内存。

关于c++ - 从 std::map 中删除动态分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819835/

相关文章:

c# - 错误 : An expression tree may not contain a dynamic operation

java - 在Java中动态加载一个类

c++ - 带有 std::map::const_iterator 的模板化类中的嵌套结构?

c++ - 如何以结构体为键将值输入到映射中?

c++ - ORM 事务提交上的 Wt Segfault

c++ - 线程安全堆栈 C++ 中的潜在死锁

c++ - 作用域指针和重置

android - ListView 内容在适配器更新后被截断

c++ - 在标记为 const 的函数中从 std::map 检索项目

c# - 在 C# 中编码 C++ .dll