在开发过程中发现这样一个bug。
在函数的开始部分以
char* frame_buf=(char*)malloc(1024*128);
实现一段内存的分配。
在函数的结尾释放该段内存:
if(frame_buf)
{
free(frame_buf);
frame_buf=NULL;
}
在代码执行过程回出现释放frame_buf失败的情况,而在此前跟本没有释放。
最后跟踪发现,在该函数当中调用了一个fs_av_read_data函数,一个参数为frame_buf,而在fs_av_read_data中向frame_buf memcpy数据,会发生越界的情况。通过修改frame_buf的大小,问题得到解决。疑惑的是为什么free会发生问题。
阅读(837) | 评论(0) | 转发(0) |