天天看点

C++释放二维指针

二维指针你是怎么释放的,这样吗?

        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博客 ” ,链接:http://blog.itpub.net/20871617/viewspace-627769/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20871617/viewspace-627769/