У меня есть программа, которая выполняет БПФ на 2d массиве. Чтобы работать с библиотекой fft fftw3, я должен использовать временный массив (называемый FTtemp), который считывает результат FFT: это 3d, поскольку он содержит ось x & y плюс действительное и мнимое значение для каждого (x у) тупель.
Передача данных из массива FFT (который имеет специальный тип переменной) в обычный массив работает в режиме отладки, но не в выпуске. В выпуске я получаю следующую ошибку времени выполнения: Место записи нарушения прав доступа 0x02913000.
Из моего поиска в Google я обнаружил, что ошибки в версии выпуска обычно связаны с неинициализированными объектами. Это привело меня к явной инициализации каждого элемента в FTtemp с 0.0, но безрезультатно. Кроме того, я распечатал элементы массива FFt на консоли и появились числа, что означает, что они также инициализированы. Следовательно, я немного не в себе и думаю, что кто-то может быть мудрее меня?
Вот фрагмент кода, о котором я говорю. Поскольку программа опирается на множество других вещей, я пока не смог воссоздать минимальный пример, но добавлю его, как только получу ту же ошибку.
Забавный факт: я печатаю & j значения l oop для консоли при устранении неисправностей, и это еще один (I, j) узел, в котором он падает каждый раз, когда я его запускаю: например: 49,212 или 116,169. Я действительно смущен этим.
FTtemp = new double** [width];
for (i = 0; i < width; i++) {
FTtemp[i] = new double*[height];
}
for ( i = 0; i < width; i++)
{
for (j = 0; j < height; j++) {
FTtemp[i][j] = new double[2];
FTtemp[i][j][0] = 0.0;
FTtemp[i][j][1] = 0.0;
}
}
cout << "width,height: " << width << "," << height << endl;
for (i = 0; i < width; i++)
{
for (j = 0; j < height; j++) {
/*
cout << "access to out: " << out[indexFFT(i, j)][0] << endl;
cout << "access to FTtemp: " << FTtemp[i][j][1] << endl;
*/
cout << "i,j is: " << i << "," << j << endl;
FTtemp[i][j][1] = out[indexFFT(i, j)][0]; <--------- error occours here
FTtemp[i][j][2] = out[indexFFT(i, j)][1];
}
}
Спасибо за внимание. Всего наилучшего, Синий