C ++程序在随机位置无故停止

C++ programm stops without a reason on a random position

我正在开发一个 C++ 程序,该程序应将火焰强度的 2D 图像转换为 3D 模型。该程序主要处理多个矩阵运算,我都使用指针实现了这些运算(我知道,虽然我可以使用向量)。 在文本文件的输入、数据值的镜像和平滑之后,对图像的每一行进行校正计算。在这个计算函数的开头,程序停在一个随机位置,但在 for 循环中声明了 y_values-vector.

这是代码片段:

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);
// ...
double* x_values = new double(n_values);

改为

double* y_values = new double[n_values];
//...
double* x_values = new double[n_values];

您应该使用 vector 双精度而不是新数组。这样,内存将在不再需要时自动删除。例如:

#include <vector>
std::vector<double> y_values(y_values);

您还 hiding variables 通过使用与参数相同的变量名。这可能会导致代码中的混乱和细微错误,您不太确定正在更改哪个变量。