解决由于程序删除内存方式写得不恰当导致的运行时错误。
使用调试运行程序时弹出断言错误,以下是调试信息:
1
2
3
4
5
6
7
8
9
10HEAP[xxx.exe]: Invalid address specified to RtlValidateHeap( 01B20000, 2F6AE020 )
Debug Assertion Failed!
File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Expression: _CrtIsValidHeapPointer(block)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)看到关键部分
HEAP[xxx.exe]
和_CrtIsValidHeapPointer
,估计是堆内存出错,程序操作堆内存,一般是使用了malloc,free,new,delete等操作;- 考虑到程序使用了FFmpeg删除视频资源弹出的错误,就联想到可能是删除操作不正确;
- 最后查明原因为av_malloc申请内存却用delete删除,修正为av_free删除即可。