多线程程序,分配内存,或者释放时候总是出错,求解决办法

shiter
人工智能领域优质创作者
博客专家认证
2016-04-02 12:57:36


/**
* @function main
*/int main( void )
{
m_pCircleBuffer = new CPs_CircleBuffer(GOLABLE_BUFFER_SIZE);

HANDLE h_cameraToh264;
h_cameraToh264 = (HANDLE)_beginthread((void(__cdecl *)(void *))CameraToH264,0,(void *)1);



HANDLE h_h264ToRtmp;
h_h264ToRtmp = (HANDLE)_beginthread((void(__cdecl *)(void *))H264ToRtmp,0,(void *)1);


WaitForSingleObject(h_cameraToh264,INFINITE);
WaitForSingleObject(h_h264ToRtmp,INFINITE);


Sleep(100);
return 0;
}


在线程函数中:前几个malloc还能用,后面的就是堆破坏,我就改成:
unsigned char* body = (unsigned char*)(PBYTE) ::HeapAlloc(GetProcessHeap(), 0, size +9);
::HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, body);

...全文
654 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yofoo 2016-04-04
  • 打赏
  • 举报
回复
这个项目需要的东西太多了opencv,x264... 还要搞一大堆先关的工具 cmake, MinGW, yasm... 调试发现你的函数 ReadOneNaluFromBuf, 这里使用的缓冲 m_pFileBuf_tmp 这个分配太小, 在使用过程中没有检查大小越界了, 导致后面malloc, free调用时检查内存出现异常
shiter 2016-04-04
  • 打赏
  • 举报
回复
引用 4 楼 zzz3265 的回复:
这个项目需要的东西太多了opencv,x264... 还要搞一大堆先关的工具 cmake, MinGW, yasm... 调试发现你的函数 ReadOneNaluFromBuf, 这里使用的缓冲 m_pFileBuf_tmp 这个分配太小, 在使用过程中没有检查大小越界了, 导致后面malloc, free调用时检查内存出现异常
谢谢大牛,我这个自己搞好了,就是我理解的h264编码发送rtmp流里面数据发送有问题,我觉 的应该是编码一帧就发送,完后后面解码时候,有的特定的数据格式找不到,导致算出来是size是错的,所以memcpy,或者malloc总是出错,谢谢大你 现在我用回调函数发多少读多少就好了,以前的思想是一帧一帧的弄完全理解错了h264的概念。。。。
b971049 2016-04-03
  • 打赏
  • 举报
回复
程序比较复杂,没仔细看,给你提一些原则性建议: 1、你的线程调用了第三方的函数,要确定这些函数是否线程安全,如果不是,需要你进行同步; 2、除非绝对必要,尽量避免new/delete 和 malloc/free混用 3、重点关注下标越界或者两个线程公用一块动态内存,但其中一个线程把内存释放了
shiter 2016-04-03
  • 打赏
  • 举报
回复
引用 2 楼 b971049 的回复:
程序比较复杂,没仔细看,给你提一些原则性建议: 1、你的线程调用了第三方的函数,要确定这些函数是否线程安全,如果不是,需要你进行同步; 2、除非绝对必要,尽量避免new/delete 和 malloc/free混用 3、重点关注下标越界或者两个线程公用一块动态内存,但其中一个线程把内存释放了
用了两个库libx264,和librtmp,主要用来 做一些编码工作,这俩库我想应该是线程安全的,可能是我代码的问题 我调试时候发现用c库申请和释放内容总是出错,但用windows api好像就没这些问题了,但是用api释放时候还是有问题,大牛用空帮我再看看哈
shiter 2016-04-02
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/wangyaninglm/9479651 求大牛好心调试一下, 主要加一个opencv就行,opencv线程把图像美化一下完后编码h264 另一个线程把h264搞成rtmp完后发送出去

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧