小编Nev*_*viJ的帖子

为什么析构函数不释放数组内存?

我的问题是为什么析构函数不释放我的临时数组的内存?Valgrind告诉我,我在构造函数中使用了new运算符,但之后没有删除内存.当我简单地写作时delete temp,我在Valgrind中遇到了许多错误,例如无效读取大小,双重免费等等.你能告诉我们这里发生了什么吗?

array_xyz(const int r, const int c, double **arg_array) {

    rows = r;
    cols = c;
    array_xyz *temp = new array_xyz();
    temp->arr = new double *[rows];
    temp->rows = r;
    temp->cols = c;
    arr = new double *[rows];

    for (int i = 0; i < rows; i++) {
        arr[i] = new double [cols];
        temp->arr[i] = new double [cols];
    }

    for (int j = 0; j < rows; j++) {
        for (int k = 0; k < cols; k++) …
Run Code Online (Sandbox Code Playgroud)

c++ valgrind destructor delete-operator

1
推荐指数
1
解决办法
308
查看次数

标签 统计

c++ ×1

delete-operator ×1

destructor ×1

valgrind ×1