gpt4 book ai didi

c++ - 链接列表析构函数上的调试断言失败 (C++ Visual Studio)

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:06 26 4
gpt4 key购买 nike

我一直在努力尝试在 Visual Studio 上用 C++ 创建一个单链表,但一直遇到这个奇怪的错误。当我测试列表时,除了删除列表时,一切都在测试中工作得很好。出于某种原因,每当我对其调用 delete 时,我都会从 Visual Studio 中弹出一个窗口,其中包含以下顺序的消息:

调试断言失败!表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

调试断言失败!表达式:_CtrilsValidHeapPointer(pUserData)

调试断言失败!表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

按照我设计列表的方式,head 是指向不包含任何数据成员的虚拟节点的指针。这是被发现导致问题的代码:

int main() {
SSLL<char> list;
list.push_back('A');
delete &list;
}

最佳答案

问题是:

int main() {
SSLL<char> list;
list.push_back('A');
delete &list; // WRONG!
}

你的类是一个堆栈本地对象,你不需要在它的地址上调用delete:当它超出范围时它会自动销毁.

关于c++ - 链接列表析构函数上的调试断言失败 (C++ Visual Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280133/

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