我有 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 奇怪的
我认为这是某种内存泄漏所以我重新启动但没有运气。
我已经和它斗争了很长时间,我已经厌倦了这个废话。
感谢您的帮助
杰夫
答案 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];
}
}
它有效!
杰夫