有段代码,大家帮忙看一下,谢谢。

findheart 2006-10-10 11:50:42
有这样一段代码(相关声明略):
iFd = 0;
snd.size = iSize;
snd.data = malloc(iRecvSize);
memcpy(snd.data, cData, iSize);
iRet = write( iFd, (char*)&snd, sizeof(snd));

这里是不是有memory leak的问题?write()之后是不是需要free掉snd.data?
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyg2008 2006-10-13
  • 打赏
  • 举报
回复
如果是故意要传递指针,那么在这里就不能free,应该等到接受者处理完数据之后再free,否则就没有任何意义了。
yaopg 2006-10-13
  • 打赏
  • 举报
回复
hyg2008(蓝色雨)说得对,data内容不在结构体中,这样发一个申请到的指针给对方,不知是故意还是搞错了。
hyg2008 2006-10-13
  • 打赏
  • 举报
回复
另外,iRet = write( iFd, (char*)&snd, sizeof(snd));
snd.data 应该是个指针吧,这里是有问题的,snd.data指向的数据根本没有write进去,只有一个指针。

hyg2008 2006-10-13
  • 打赏
  • 举报
回复
为什么要malloc呢?为什么不用局部变量?
我一看到malloc就不爽,即使要用malloc就应该结合memPartCreate()嘛
maplewasp 2006-10-10
  • 打赏
  • 举报
回复
正如LZ所说:需要free(snd.data),要不然确实会产生内存泄漏。

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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