我使用构造函数(使用内存 Dinamic char *t = 新字符 [10] t = "test123456" ;))时遇到错误堆错误并在析构函数中删除 [] t;错误



错误堆内存,内存损坏,#181 只是不明白。有时尝试使用复制 ctor 和它相同的错误。你能解释一下吗

Test::Test() {
    desc = new char[4];`
    desc = "Try";
} 
Test::~Test() {delete [] desc; }

它失败是因为您不了解C++的基础知识。

desc = new char[4]; desc = "Try";

这行代码首先为 4 个字符分配内存,返回指向已分配内存的指针并将其存储在 desc 中。但是,下一刻您完全失去了此指针,现在将"Try"(字符串文本)分配给desc。现在,您的desc指向"尝试"。

这里

Test::~Test() {delete [] desc; }

您删除指向"尝试"的指针 - 好像您会delete "Try".但是您不能删除字符串文本,您没有创建它。

因此崩溃。

最新更新