Я работаю над программой на C++, которая должна передавать 2D-изображение интенсивности пламени в 3D-модель. Программа в основном работает с несколькими матричными операциями, которые я все понял с помощью указателей (я знаю, я мог бы использовать векторы, хотя). После ввода текстового файла, зеркалирования и сглаживания значений данных, происходит расчет коррекции для каждой строки изображения. В начале функции для этого вычисления программа останавливается в произвольной позиции, но в for-loop объявляет вектор y_values.Программа C++ останавливается без причины в случайной позиции
Вот код-фрагмент:
void CorrectionCalculation(Matrix Matrix_To_Calculate, int n_values, int polynomial_degree, int n_rows)
{
for (int h = 0; h < n_rows; h++)
{
//Initialising and declaration of the y_values-vector, which is the copy of each matrix-line. This line is used for the correction-calculation.
double* y_values = new double(n_values);
for (int i = 0; i < n_values; i++)
{
y_values[i] = Matrix_To_Calculate[h][i];
}
//Initialisiing and declaration of the x-values (from 0 to Spiegelachse with stepwidth 1, because of the single Pixels)
double* x_values = new double(n_values);
for (int i = 0; i < n_values; i++)
{
x_values[i] = i;
}
При расчете единой строки, программа работала нормально. Но когда я добавил код для вычисления всего изображения, программа останавливается.
'double * y_values = new double (n_values);' Это не будет создавать массив, а единственный двойной элемент. Как программа ведет себя после этой коррекции (есть две из них)? – lared
«Без причины». Да, ваша программа идеальна, каковы были дизайнеры C++. – Blindy
Вы правы, я должен был написать «без очевидной причины (для меня и в данный момент)». Инициализация y_values и x_values была единственным случаем, когда я забыл использовать [] вместо(). Довольно раздражать, чтобы не понять, что неудача, но, похоже, я стоял на трубе. –