0

我有一个System.AccessViolationException,但我不知道这怎么可能。我将数组缩小到一个简单的范围:

analyzedReal[0][0][0] <- works
analyzedReal[1][0][0] <- fails.

这是我的代码:

--in temp.h --
double*** analyzedReal;
double*** analyzedImag;

--in temp.cpp :--
int nbAnalyses = 215;
analyzedReal = new double**[nbAnalyses];
analyzedImag = new double**[nbAnalyses];

for (int i = 0; i < nbAnalyses; i++)
{
  analyzedReal[i] = new double*[2048];
  analyzedImag[i] = new double*[2048];

 for (int j = 0; j < 2048; j++)
  {
    analyzedReal[i][j] = new double[10];
    analyzedImag[i][j] = new double[10];
  } 
}

奇怪的是,它只发生在数组analyzeReal上而不发生在analyzeImag上

我认为这是某种内存泄漏,所以我重新启动但没有运气。

4

1 回答 1

0

而不是这个:

for (int i = 0; i < nbAnalyses; i++)
{
  analyzedReal[i] = new double*[2048];
  analyzedImag[i] = new double*[2048];
 
 for (int j = 0; j < 2048; j++)
  {
    analyzedReal[i][j] = new double[10];
    analyzedImag[i][j] = new double[10];
  } 
}

写这个:

for (int i = 0; i < nbAnalyses; i++)
{
  analyzedReal[i] = new double*[2048];
  analyzedImag[i] = new double*[2048];
}
for (int i = 0; i < nbAnalyses; i++)
{
 for (int j = 0; j < 2048; j++)
  {
    analyzedReal[i][j] = new double[10];
    analyzedImag[i][j] = new double[10];
  } 
}
于 2013-07-25T09:30:29.237 回答