首页 > 代码库 > 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.
很容易看出在哪个位置分配了内存而没有释放掉~
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。