CrtDbg无法检测到的内存泄露,该如何解决
CrtDbg无法检测到的内存泄露在VC2010中编译如下代码:C/C++ code#include crtdbg.hint main(){// 设置标
CrtDbg无法检测到的内存泄露
在VC2010中编译如下代码:
C/C++ code#include <crtdbg.h>int main(){ // 设置标志后, 编译器会自动在任何退出的地方调用_CrtDumpMemoryLeaks();输出内存泄漏报告 _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); int *p = new int[10]; delete p;//去掉这一句可以检测到 return 0;}
以上的代码无法检测到内存泄露,其实我不确定到底是有内存泄露,没有检测到,还是根本没有发生内存泄露?
或者说对于基本数据类型,delete和delete []的作用是一样的?
[解决办法]对于基本数据类型,delete和delete []的作用是一样的.
[解决办法][解决办法]这个属于分配和释放api不匹配,undefined behavior,并不一定会泄漏。
[解决办法]标准也规定这样的行为是undefined behavior的。所以按规矩来。
[解决办法]区别 只是是否全部调用析构函数.
想避免这种东西. 只需要自己写一个池即可.
自己malloc 自己构造 自己析构.