在C++中,如何正确释放`std::map`中指针指向的内存以避免内存泄漏?
使用`std::map`存储指针时,如果只调用`map.clear()`或让map对象销毁,并不会自动释放指针所指向的堆内存。例如:`std::map myMap`,插入的是动态分配的对象指针`new MyClass()`。此时必须手动遍历map,对每个值调用`delete`释放内存,代码如下:
```cpp
for (auto& elem : myMap) {
delete elem.second; // 释放指针资源
}
myMap.clear(); // 清空map
```
若遗漏此步骤,会导致内存泄漏。为简化管理并防止疏漏,推荐使用智能指针如`std::unique_ptr`或`std::shared_ptr`替代原始指针,例如`std::map>`,这样可以自动管理内存,减少内存泄漏风险。