2D动态数组无法删除

时间:2013-11-16 21:48:07

标签: c++ arrays dynamic

所以这肯定是一个荒谬的问题但是,我搜索并搜索无济于事。这就是说,墨菲的法律中可能有一条规定,一旦你发布了一个问题,有人会在5分钟后指示你找一个相同的帖子......

无论如何,我使用以下函数创建一个2D数组:

double** matrixCreate(int rows, int cols, double initialValue)
{
    double** temp; temp=new double*[rows];
    for(int j=0;j<rows;j++) {temp[j]=new double [cols];}

    //Set  initial  values   
    for(int i=0;i<rows;i++)  
    {  
        for(int j=0;j<cols;j++)
        {
            temp[i][j]=initialValue;
        }
    }

    return  temp;
}

然后我用矩阵做了一些事情,然后通过以下函数删除:

void  matrixDestroy(double** &temp,int rows)
{
    for(int j=0;j<rows;j++) 
    {
        delete[] temp[j];
    }

    delete[] temp;
}

不幸的是,尽管我对管理层进行了细心的尝试,但Visual Leak Detector说我做错了。奇怪的是,我对一维数组有类似的创建和删除功能,这很好。

此外,如果在调用matrixDestroy之后,我尝试重用(假设)删除矩阵的相同变量名(将其声明为不同的类型),我得到一个错误。不确定这是症状还是限制。有谁知道你是否应该这样做?

欢迎任何帮助。谢谢,希望它是显而易见的。

我应该提到是的,我确实确保给出的行数是正确的。对于那些对矩阵的“东西”感兴趣的人来说,它是多维Nelder Mead最小化引擎的一部分。

=============================== UPDATE =============== ======== 好的。我找到了。真的有点尴尬。我试图在没有首先释放内存的情况下将double *写入其中一个“行”。哎呀!

现在修复了。感谢您的帮助!原来matrixDestroy函数都很好。我应该知道它会被埋没一些东西。

0 个答案:

没有答案