ITPub博客

首页 > Linux操作系统 > Linux操作系统 > C++释放二维指针

C++释放二维指针

原创 Linux操作系统 作者:ownone 时间:2010-02-24 15:04:02 0 删除 编辑
二维指针你是怎么释放的,这样吗?
        for(int k=0;k        {
            if (two[k] != NULL)
            free(two[k]);
            two[k] = 0;
        }

        free(two);
        two= 0;
不错,代码完全正确,但是屡屡报错,释放了不属于你的空间。
Oh,OMG,怎么回事,看看我们怎么申请内存的啊
你的初始化的表现也很好
        if (two== 0)
        {
            two = (double **)calloc(sizeof(double *), m_nImageHeight);
            memset(two, 0, m_nImageHeight * sizeof(double *));
        }
       
        for(int k=0;k        {
            if (two[k] == 0)
            {
                two[k] = (double *)calloc(sizeof(double),m_nImageWidth);//申请二维矩阵
            }
        }
恩,不错啊,申请了两级指针的内存。
但是你对了吗?否!!
因为如果你没有初始化的时候two =0但是two[0]还是有值的,结果你释放了不属于你的空间。
还有一点忠告,尽量少用复制,粘贴。如果出了一点错误。结果~~~。自作孽不可活啊

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20871617/viewspace-627769/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-02-21

  • 博文量
    5
  • 访问量
    8872