错误堆内存,内存损坏,#181只是不理解它。一段时间尝试使用复制ctor和它相同的错误。你能解释一下吗
Test::Test() {
desc = new char[4];`
desc = "Try";
}
Test::~Test() {delete [] desc; }
答案 0 :(得分:3)
它失败了,因为你不了解C ++的基础知识。
desc = new char[4]; desc = "Try";
这行代码首先为4个字符分配内存,返回指向已分配内存的指针并将其存储在desc
中。但是,下一刻你完全失去了这个指针,现在将“Try”(字符串文字)分配给desc
。现在您的desc
指向“尝试”。
下面
Test::~Test() {delete [] desc; }
删除指向“尝试”的指针 - 就好像你会delete "Try"
一样。但是你不能删除一个字符串文字,你没有创建它。
因此崩溃。