添加以下代码:
#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
#ifdef _DEBUG
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
1)new完忘记释放,包括类对象和数据结构;2)new的大,释放的小,程序bug;3)宏定义new的数组,宏定义delete标量;4)对vector的初始化错误使用了memset;

本文讨论了C++编程中常见的内存管理问题,如忘记释放动态分配的对象、大小不匹配的new/delete操作、使用宏定义处理数组与非数组内存、以及vector初始化错误。强调了在DEBUG模式下正确使用new、delete和C++调试工具的重要性。
14万+

被折叠的 条评论
为什么被折叠?



