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];
  } 
}

奇妙なことに、 analysedImagではなく、analyzeReal配列でのみ発生します。

ある種のメモリリークだと思ったので再起動しましたが、うまくいきませんでした。

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 に答える