gpt4 book ai didi

c++ - 删除内存错误

转载 作者:行者123 更新时间:2023-11-30 01:31:58 26 4
gpt4 key购买 nike

我有以下场景,

class foo
{
...
private:
char *_test;
};

void foo::setTest()
{
if( 0 != _test ) delete [] _test;
}

setTest 函数在调用时抛出错误,因为它试图在 _test 尚未分配时删除它。发生这种情况是因为 _test 未设置为 0X0。

谁能帮助我理解这一点?

最佳答案

您应该在构造函数中使用 NULL 初始化 _test。

喜欢:

foo:foo {
_test = NULL;
}

如果不这样做,_test 将具有垃圾值(value)。

Chris 也指出,作为参数传递给 delete 或 (delete[]) 的值必须是指向先前使用 分配的内存块的指针>new,或一个空指针(在空指针的情况下,删除不会产生任何效果),有效地使您的 NULL 检查变得多余。

关于c++ - 删除内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376398/

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