读书人

CrtDbg无法检测到的内存泄露,该如何解

发布时间: 2012-04-10 21:03:56 作者: rapoo

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 []的作用是一样的.
[解决办法]
探讨
对于基本数据类型,delete和delete []的作用是一样的.

[解决办法]
这个属于分配和释放api不匹配,undefined behavior,并不一定会泄漏。
[解决办法]
标准也规定这样的行为是undefined behavior的。所以按规矩来。
[解决办法]
区别 只是是否全部调用析构函数.

想避免这种东西. 只需要自己写一个池即可.

自己malloc 自己构造 自己析构.

读书人网 >C++

热点推荐