所以这肯定是一个荒谬的问题但是,我搜索并搜索无济于事。这就是说,墨菲的法律中可能有一条规定,一旦你发布了一个问题,有人会在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函数都很好。我应该知道它会被埋没一些东西。