VC 内存泄漏 {157} normal block at 0x00E0DAE0, 64 bytes long.的解决办法
{157} normal block at 0x00E0DAE0, 64 bytes long.
Data: <P ( > 50 DB E0 00 28 DF E0 00 90 DF E0 00 F8 DF E0 00
vc程序在的debug时,会输出如上的内存泄露提示。在一般情况下,上述提示应该是带有源文件与行号信息,我们便可以依据源文件及行号信息,定位到new的地方,从而进行相应的解决。
但是,在有些情况下,如上,只提示内存泄漏,没有定位信息,这时我们往往就只能靠经验了。不过,微软的孩子们早就意识到这个问题,因此也给出了解决方案,那就是:
注意到开头的花括号里的数字了吗,这是一个顺序号,我们可以通过这个顺序号,找到分配内存的地方,与“源文件+行号”信息无二。
借助函数:_CrtSetBreakAlloc(no.);
步骤:
1、在CxxApp::CxxApp()中加入:
_CrtSetBreakAlloc(157.);
2、去掉其他断点,以Debug模式启动,
3、执行相关操作,等待程序触发断点,
4、从调用堆栈call stack找到我们分配内存的地方
5、解决问题...
完美了~~ 2021.04.22于雄安新区...