当前位置:  开发笔记 > 编程语言 > 正文

你如何检查无效指针?

如何解决《你如何检查无效指针?》经验,为你挑选了3个好方法。

我目前的代码效果如下:

if( objectPointer != NULL){
    delete objectPointer;
}

不起作用,因为编译器将指针设置为无效的十六进制数,例如:

0xbaadf00d

0xdeadbeef

等等....

那么在尝试删除对象之前检查无效指针的最佳方法是什么?



1> Brett Daniel..:

始终将指针初始化为NULL(即0).来自http://www.lysator.liu.se/c/c-faq/c-1.html:

空指针在概念上与未初始化的指针不同.已知空指针不指向任何对象; 未初始化的指针可能指向任何位置.



2> 1800 INFORMA..:

调用delete时,不需要检查not-NULL.明确定义它什么都不做.

delete NULL; // this is allowed

您编写的任何正确代码都不会受到编译器放入未初始化或已释放内存的这些奇怪值的影响.它将这些值放在那里,以帮助您找到错误.你好,你有一个bug.



3> Johannes Sch..:

如果它没有指向任何东西,最好的方法是将其设置为NULL.Globals,其他命名空间中的指针和本地静态指针会自动初始化为空指针.如果你需要针对NULL测试它们,那么类成员和普通本地应该手动初始化为NULL(有些人喜欢使用它们0.当然,这完全等效).

然后,您可以检查NULL,但也可以立即传递指针delete,因为它对删除空指针没有任何影响(由C++标准保证).

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有