C++ Map中存储动态指针时正确释放内存
原创文章,作者:StubbornHuang,如若转载,请注明出处:《C++ Map中存储动态指针时正确释放内存》https://www.stubbornhuang.com/353/
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_CLIENTBLOCK
#endif
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#ifdef _DEBUG
#define new DEBUG_CLIENTBLOCK
#endif
#include <iostream>
#include <map>
#include <string>
using namespace std;
class Example
{
public:
Example();
Example(int newIndex);
virtual ~Example();
int m_Index;
};
Example::Example()
{
}
Example::Example(int newIndex)
{
m_Index = newIndex;
}
Example::~Example()
{
}
int main()
{
std::map<std::string, Example*> MyTestMap;
for (unsigned int i=0;i<10;++i)
{
std::string tempStr = std::to_string(i);
Example* pExample = new Example(i);
MyTestMap[tempStr] = pExample;
}
std::map<std::string, Example*>::iterator iter = MyTestMap.begin();
while (iter != MyTestMap.end())
{
delete iter->second;
iter->second = NULL;
iter = MyTestMap.erase(iter);
}
MyTestMap.clear();
getchar();
_CrtDumpMemoryLeaks();
return 0;
}
当前分类随机文章推荐
- C++ 11 - final关键字简要介绍
- C++ - 得到字符串中某个字符串出现的个数
- C++ - 控制台程序在控制台窗口可变参数格式化带颜色输出日志信息
- C++ - 只有在Debug模式下才使用std::cout输出调试日志,Release发布版本不输出调试日志
- C++11/std::condition_variable - 生产者消费者模型
- C++ - vector存储动态指针时正确释放内存
- C++11/std::shared_ptr - 循环引用问题
- C++11 - std::string - stod/stof/stoi/stol/stold/stoll/stoul/stoull,由std::string转换为int/long/float/double等其他类型
- C++11 - 使用std::chrono计算程序、函数运行时间
- C++11 - std::bind简要介绍以及可绑定函数的几种形式总结
全站随机文章推荐
- Python3爬虫 - 下载反盗链图片的方式
- 资源分享 - GDI+教程(C++中文版 GDI+SDK中文参考手册)PDF下载
- C++11/std::thread - 线程的基本用法
- 常用的三维图形库以及软件所使用的坐标系以及旋转正方向
- 资源分享 - Microsoft Voxelized Upper Bodies – A Voxelized Point Cloud Dataset下载
- FFmpeg - 音频处理基本概念以及音频重采样(采样率转换)
- VTK - 冠脉重建点匹配坐标数据下载
- C++ - 只有在Debug模式下才使用std::cout输出调试日志,Release发布版本不输出调试日志
- Duilib - 设置窗体阴影
- Windows平台录音类封装:AudioRecordWindows