请教一个有关问题内存检测的有关问题
请问一个问题内存检测的问题?C/C++ code#define _CRTDBG_MAP_ALLOC#include stdio.h#include crtdbg.h
请问一个问题内存检测的问题?
C/C++ code#define _CRTDBG_MAP_ALLOC#include <stdio.h>#include "crtdbg.h"#define new new( _CLIENT_BLOCK, __FILE__, __LINE__)class A{public: A(void) {} ~A(void){}};class B{public: B(void) {m_pData = new A;} ~B(void) {delete m_pData;}private: A * m_pData;};void main(){ B b1; _CrtDumpMemoryLeaks();}
怎么这样运行也会报:
Detected memory leaks!
Dumping objects ->
d:\visual 2008\projects\pdf\i\b.h(6) : {58} client block at 0x00461C08, subtype 0, 1 bytes long.
Data: < > CD
Object dump complete.
这是怎么回事呀?
[解决办法]CrtDumpMemoryLeaks()就是显示当前的内存泄漏。
注意是“当前”,也就是说当它执行时,
所有未销毁的对象均会报内存泄漏。
在你的代码调用CrtDumpMemoryLeaks()的时候, B b1;new了块内存还没有销毁,所以提示的内存泄露其实没什么的
[解决办法][解决办法]如 2# 换用 Intel 的工具。
Memory Leak, data race ...
内存泄露, windows的Handle,句柄泄露, 各种泄露, 都可以....
线程的问题, 竞争,死锁.....
直接定位到源代码, 图形化,很漂亮,又准确... 还能给出 修改建议..
linux, macos, windows, 跨平台。
MS,一向大而全, 一堆大杂烩的工具。 比如Visual Studio, 大杂烩。 其实,无论是源码管理,版本控制, 到编译器, 到性能优化, profile, 到 各种错误检测, debug, parallel debug .... MS的VS,都用着不爽。 (VS, 就是个 优秀的 代码编辑器)
[解决办法]检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!