问题描述
我正在学习c ++中的“删除”,我已经学习了复制对象时的赋值运算符。但是,当我编写自己的代码时,出现了一个错误,即未分配要释放的指针
这是我的代码:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class IHazStringPtr{
private:
string * str;
public:
IHazStringPtr() : str(new string()) {}
void addCharacter(const char c) {
str->push_back(c);
}
~IHazStringPtr() {
cout<< "destructor\n";
delete str;
}
IHazStringPtr & operator=(const IHazStringPtr & other) {
cout<<"need to delete?"<<endl;
delete str;
if(other.str) {
str = new string(*(other.str));
}else {
str = nullptr;
}
return *this;
}
};
int main(){
IHazStringPtr a;
IHazStringPtr b = a;
cout<< "all done\n";
return 0 ;
}
终端说:
all done
destructor
destructor
1006week2(5301,0x1000d7dc0) malloc: *** error for object 0x1007ad1a0: pointer being freed was not allocated
1006week2(5301,0x1000d7dc0) malloc: *** set a breakpoint in malloc_error_break to debug
(lldb)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)