首页 > 代码库 > vc++ 程序内存泄漏的排查

vc++ 程序内存泄漏的排查

      今天刚学习的,怎样快速准确的查看内存泄漏,马上用到项目中~~~~

      使用_CrtDumpMemoryLeaks,这个函数在crtdbg.h头文件中,一般vc++程序可以直接引用。CrtDumpMemoryLeaks()是显示当前的内存泄漏。 注意“当前”的意思是说当它执行时,所有未销毁的对象均会报内存泄漏。如果是想查程序有没有内存泄漏的话,尽量把这个函数往后面放;如果是检查某个地方的指针内容是否被完全释放,可以写在这个释放之后~~

    当然这个是用在调试模式中,Crt会把前面分配过的内存的文件名和行号以及大小等记录下来,当调用_CrtDumpMemoryLeaks()时,如果还没释放就会打印出来。

结果如下:
Detected memory leaks!
Dumping objects ->
f:\test\memleakchecker\memleakchecker\memleakchecker.cpp(23) : {108} normal block at 0x0003A1A8, 10 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD
f:\test\memleakchecker\memleakchecker\memleakchecker.cpp(22) : {107} client block at 0x0003A160, subtype 0, 10 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD
f:\test\memleakchecker\memleakchecker\memleakchecker.cpp(21) : {106} client block at 0x0003A120, subtype 0, 1 bytes long.
Data: < > 00
Object dump complete.
很容易看出在哪个位置分配了内存而没有释放掉~