繁体   English   中英

我使用构造函数(使用 memory dinamic char *t = new char [10] t ="test123456";)并在析构函数中删除 [] t; 错误

[英]i have get error heap error using constructor ( use memory dinamic char *t = new char [10] t ="test123456";) and in distructor delete [] t; error

错误堆内存,内存损坏,#181 就是不明白。 有一段时间尝试使用 copy 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; }

您删除指向 "Try" 的指针 - 就像您会delete "Try" 但是您不能删除字符串文字,因为您没有创建它。

因此崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM