免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1968 | 回复: 3
打印 上一主题 下一主题

求助:内存释放问题。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-27 11:23 |只看该作者 |倒序浏览
本帖最后由 yangqing320119 于 2010-11-30 11:20 编辑

22

论坛徽章:
0
2 [报告]
发表于 2010-07-27 11:35 |只看该作者
你想问什么?

论坛徽章:
0
3 [报告]
发表于 2010-07-27 16:06 |只看该作者
要养成释放内存之后置0的好习惯,  double free or corruption (out) 两次释放同一段内存
void GetDiskPerHandler ::free_mount_entry_node(struct mount_entry *node)
{
        if (node->me_devname)
        {   
                free(node->me_devname);
                node->me_devname = 0;
        }   
        if (node->me_mountdir)
        {   
                free(node->me_mountdir);
                node->me_mountdir = 0;
        }   
        if (node->me_type)
        {   
                free(node->me_type);
                node->me_type = 0
        }   
        free(node);
        node = 0;
        printf("me_devname=%d,me_mountdir=%d,me_type=%d,node=%d\n",node->me_devname,node->me_mountdir,node->me_type,node);
}

论坛徽章:
0
4 [报告]
发表于 2010-07-27 16:11 |只看该作者
还有这样写代码 不是很好 你可以这样定义结构体
struct mount_entry
{
        ~mount_entry()
        {   
                if (node->me_devname)
                {   
                        free(node->me_devname);
                        node->me_devname = 0;
                }           
                if (node->me_mountdir)
                {   
                        free(node->me_mountdir);
                        node->me_mountdir = 0;
                }           
                if (node->me_type)
                {   
                        free(node->me_type);
                        node->me_type = 0
                }           
        }           

        ...
}

这时定义释放函数就明朗多了
void GetDiskPerHandler ::free_mount_entry_node(struct mount_entry *node)
{
  if (node)
  {
     free(node);
     node = 0;
  } printf("me_devname=%d,me_mountdir=%d,me_type=%d,node=%d\n",node->me_devname,node->me_mountdir,node->me_type,node);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP