gpt4 book ai didi

c++ - 调试断言错误 - 删除对字符指针的调用

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:55 24 4
gpt4 key购买 nike

所以我决定深入研究讨厌的 C++。

当我在指向我创建的一个简单类的指针上调用 delete 函数时,我收到了 Debug Assertion Failure -Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)。我认为这是因为我错误地处理了字符串操作,从而导致内存损坏。

我创建了一个基本类 [I]animal[/I],它定义了一个可以通过函数设置的字符串。

// name
char * ptrName;

animal::animal(char * name)
{
this->SetName(name);
};

animal::~animal()
{
delete [] ptrName;
}

void animal::SetName(char * name)
{
ptrName = name;
};

当使用如下所示的上述类时,会发生错误。我已经尝试了 delete ptrNamedelete [] ptrName 但无济于事。

animal * cat = new animal("Optimus Prime");
delete cat;

我错过了什么?

最佳答案

字符串 "Optimus Prime" 不是动态分配的,因此对其调用 delete 是不正确的。

关于c++ - 调试断言错误 - 删除对字符指针的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com