我们有一个用C编写的代码,有时候不能很好地处理零指针。
该代码最初是在Solaris上编写的,这样的指针会导致分段错误。 不理想,但比耕作更好。
我们的经验是,如果从AIX上的空指针读取,则得到0.如果使用xlc编译器,则可以添加选项-qcheck=all
来捕获这些指针。 但我们使用gcc(并希望继续使用该编译器)。 gcc提供这样的选择吗?
gcc提供这样的选择吗?
我怯懦地自愿回答否,但事实并非如此 。 虽然我不能引用缺少有关gcc和运行时NULL检查的信息。
你正在解决的问题是你试图在一个编写得不好的程序中更多地定义未定义的行为。
我建议您咬紧牙关并切换到xlc或手动将NULL
检查添加到代码中,直到找到并删除了不良行为。
考虑:
删除错误后,您可以开始删除这些检查。
结论:我认为你不能避免添加显式的NULL
检查。
不幸的是,我们现在提出了一个基本问题: 应该在哪里添加NULL检查? 。 我想如果您在发现问题时添加显式检查,编译器会不加选择地添加此类检查。
不幸的是,没有Valgrind对AIX的支持。 如果您有现金,您可能希望查看IBM Rational Purify Plus for AIX – 它可能会捕获此类错误。
也可以在测试系统上使用xlc
在其他所有内容上使用gcc
,但遗憾的是它们并不完全兼容。
以上就是c/c++开发分享使用GCC C处理AIX上的空指针相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545626.html