相关疑难解决方法(0)

删除NULL指针是否安全?

删除NULL指针是否安全?

它是一种很好的编码风格吗?

c++ pointers memory-management null-pointer delete-operator

281
推荐指数
5
解决办法
15万
查看次数

在删除之前有没有理由检查NULL指针?

我经常NULL在删除指针之前看到遗留代码检查,类似于

if (NULL != pSomeObject) 
{
    delete pSomeObject;
    pSomeObject = NULL;
}
Run Code Online (Sandbox Code Playgroud)

NULL在删除之前有没有理由检查指针?NULL之后设置指针的原因是什么?

c++ null pointers delete-operator

49
推荐指数
4
解决办法
3万
查看次数

在删除具有重载删除的对象之前进行NULL检查

这是代码审查评论之一.

在为任何对象调用delete之前检查NULL是个好主意吗?

我确实理解删除运算符在内部检查NULL并且是多余的,但是提出的参数是删除,因为运算符可以重载,如果重载版本没有检查NULL,它可能会崩溃.因此,假设如果和何时删除将被重载,它是否安全合理,它将检查是否为NULL?在我的理解中,合理地假设第一种情况是重载删除应该处理NULL检查,并且审查点不成立.你怎么看?

c++ null delete-operator

26
推荐指数
4
解决办法
4473
查看次数

删除NULL但没有编译错误

我很困惑为什么下面的C++代码可以编译.为什么调用删除0的方法不会产生任何错误?!

int *arr = NULL;     // or if I use 0, it's the same thing      
delete arr;
Run Code Online (Sandbox Code Playgroud)

我确实尝试过运行它,它根本没有给我任何错误......

c++ null

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

在删除之前测试C++中的void指针

我在C++中有一个数组:

Player ** playerArray;
Run Code Online (Sandbox Code Playgroud)

它在它所在的类的构造函数中初始化.

在析构函数中,我有:

delete playerArray;
Run Code Online (Sandbox Code Playgroud)

除了通过Valgrind测试程序时,它说有一些调用要删除一个void指针:

 operator delete(void*)
Run Code Online (Sandbox Code Playgroud)

我想在调用delete之前测试playerArray是否为void指针以避免此错误.

有谁知道如何做到这一点?

c++ memory valgrind void-pointers delete-operator

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