错误:malloc:对象 0x7f9edf504080 的 *** 错误:未分配正在释放的指针
Error: malloc: *** error for object 0x7f9edf504080: pointer being freed was not allocated
我正在尝试为一个类编写此代码并处理矩阵,但不断收到错误:
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[]
的模式完全相同(但相反(?
相关文章:
- 释放错误后堆使用
- 正在理解智能指针,但出现错误:未分配正在释放的指针
- 使用全局声明的向量时,C++双重释放错误/损坏
- 错误:malloc:对象 0x7f9edf504080 的 *** 错误:未分配正在释放的指针
- 错误:"释放后使用包装器对象 (WRAPPER_ESCAPE)"
- 释放动态内存时C++错误
- 双重释放或损坏(输出)和中止(核心转储)错误
- AddressSanitizer 将 std::vector<T>::p ush_back 标识为释放后堆使用错误的原因
- 如何修复对象在释放后可能修改的malloc错误
- 错误:释放指针未分配在矢量模板类C 中
- 在函数内部错误定位后,从函数中释放返回的指针会导致芯片崩溃
- 双重释放或损坏错误(找不到错误?
- 删除指针时,未分配被释放的 C++ 指针错误
- 对于我的类函数,我得到双重释放或损坏错误
- 删除[]是否可以与通用数组正常使用?如果是这样,为什么使用std :: vector ::擦除它会导致释放内存的错误
- 为什么会出现错误:未分配正在释放的指针
- 循环链表的内存错误:未分配正在释放的指针
- C++复制构造函数上的双重释放错误
- C ++对象给了我一个错误:未分配正在释放的指针
- malloc: 对象 0x00 的 *** 错误:未分配正在释放的指针