错误:malloc:对象 0x7f9edf504080 的 *** 错误:未分配正在释放的指针

Error: malloc: *** error for object 0x7f9edf504080: pointer being freed was not allocated

本文关键字:错误 释放 指针 对象 0x7f9edf504080 malloc 分配      更新时间:2023-10-16

我正在尝试为一个类编写此代码并处理矩阵,但不断收到错误:

malloc: *** error for object 0x7f9edf504080: pointer being freed was not allocated
malloc: *** set a breakpoint in malloc_error_break to debug

如果有人能帮忙,将不胜感激。

#include <iostream>
using namespace std;
class matrix {
int **a;
public:
matrix() {
int i,j;
a = new int*[3];
for (i = 0; i <3; i++)
a[i] = new int[3];
cout << "Enter elements for 3x3 matrix: n";
for (i = 0;i <3; i++)
for (j = 0;j <3; j++)
cin >> a[i][j];
}
matrix (matrix &x) {
int i,j;
a = new int*[3];
for (i = 0;i <3;i++)
a[i] = new int[3];
for (i = 0;i < 3; i++)
for (j = 0;j < 3; j++)
a[i][j] = x.a[i][j];
}
~matrix() {
int i;
for (i = 0;i<3;i++)
delete a;
}
void putinmatrix();
};
void matrix::putinmatrix() {
int i,j;
for (i = 0;i < 3;i++) {
for(j = 0;j<3;j++)
cout << a[i][j] <<" ";
cout<<endl;
}
}
int main() {
matrix obj1;
matrix obj2(obj1);
cout<<"Matrix 1 and Matrix 2:n";
obj1.putinmatrix();
}

你的析构函数不正确,你的构造函数中有四个new[],所以你的析构函数中应该有四个delete[]

~matrix() {
for (int i = 0; i<3; i++)
delete[] a[i];
delete[] a;
}

看看delete[]的模式如何与new[]的模式完全相同(但相反(?