基于VS2010+FFmpeg写个录制屏幕加音频的demo,结果内存泄漏,报错了。运行结束时,报错如下:
Detected memory leaks!
Dumping objects ->
{383} normal block at 0x05785AD0, 152 bytes long.
Data: << N N x 7 > 3C AC 4E 10 00 00 00 00 BC A4 4E 10 78 B6 37 00
Object dump complete.
从网上找解决方案:
1、在你开辟空间的前(如果有好多变量是新开辟的内存,那么就定位到第一个新开辟空间的前面),
添加如下一行代码(注意前面的下划线):
_CrtSetBreakAlloc(383); //383为上面内存泄漏的块号.
2、 在debug下运行程序,然后程序会定位到如下位置,停下来:
/* break into debugger at specific memory allocation */
if (_crtBreakAlloc != -1L && lRequest == _crtBreakAlloc)
_CrtDbgBreak();
3、 然后点击中断程序,开始调试,点击【跳出】
程序会自动一步一步往上跳,就能找到你的哪个变量出问题了。
比如我的程序,定位到此处
然后就找到了,这个变量果然没有释放内存。
在程序最后添加 delete [] picture_buf; 就可以了。