请问以下几句代码有没有问题?

ssping 2008-05-25 08:31:57


void tt(int dnNum,int nsize)
{
char **cTtid;
int i;
if (dnNum > 0 && nsize > 0)
{
cTtid= calloc(dnNum,nsize);
for (i=0;i<dnNum ;i++)
{
cTtid[i] = (char*)malloc(nsize);
memset(cTtid[i],'\0',nsize);
}
……
……
……
……
for (i=0;i<dnNum ;i++)
free(cTtid[i]);
free(cTtid);
}
}
请问这个函数会否造成内存重复分配?最后的内存释放能否将申请的内存全部释放干净?
...全文
169 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fred_56 2008-06-06
  • 打赏
  • 举报
回复
楼上说的很有道理
jackydi 2008-06-06
  • 打赏
  • 举报
回复
好像有点问题,vxworks中指针的大小是4个字节,你应该先判断nsize的大小是否大于4,如果小于4的话在后面分配内存的时候就会造成数组越界了。
Randy_lu 2008-05-31
  • 打赏
  • 举报
回复
最好加个分配是否成功的判断,另外是否后让它指为空
maplewasp 2008-05-26
  • 打赏
  • 举报
回复
应该可以!动态申请了一个二维的数组,释放顺序就是
for (i=0;i <dnNum ;i++)
free(cTtid[i]);
free(cTtid);

2,179

社区成员

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

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