错误System.AccessViolationException VS2010

时间:2013-07-24 20:04:26

标签: access-violation

我有 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 奇怪的

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

我已经和它斗争了很长时间,我已经厌倦了这个废话。

感谢您的帮助

杰夫

1 个答案:

答案 0 :(得分: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];
  } 
}

它有效!

杰夫