小编Nic*_*edt的帖子

尝试删除对象时检测到堆损坏(C++)

我在程序结束时删除对象时遇到问题.这是一个C++课程,所以我们不允许使用字符串类(尚).我有一个武器类,它为武器生成一个名称,这个名称被实例化,char* result = new char[len]然后返回给构造函数.在析构函数中,我删除了名称对象delete[] this->name.

问题:

当我运行我的程序时,一切运行正常,直到程序进入程序的删除部分.然后我收到此错误消息:

调试错误!

计划:...计划之路......

HEAP CORRUPTION DETECTED:正常块(#198)后0x0100B918.CRT检测到应用程序在堆缓冲区结束后写入内存.

(按"重试"调试应用程序)

我尝试用删除[]替换删除,反之亦然,它没有任何区别.

任何人都可以找到我想错的地方吗?

main.cpp中:

int _tmain(int argc, _TCHAR* argv[]) {

    // ... code ...

    Weapon* weapon = new Weapon();

    // ... code ...

    delete weapon;

}
Run Code Online (Sandbox Code Playgroud)

Weapon.cpp:

Weapon::Weapon() {
    this->name = this->generateName();
    // more properties...
}

Weapon::~Weapon() {
    delete[] this->name;
    this->name = nullptr;
}

char* Weapon::generateName() {
    int pr, tp, su; // random variables for picking prefix, type and suffix

    const char *prefix[10] …
Run Code Online (Sandbox Code Playgroud)

c++ arrays object string-literals

1
推荐指数
1
解决办法
484
查看次数

标签 统计

arrays ×1

c++ ×1

object ×1

string-literals ×1