编译器升级后,我遇到了新的警告消息。
事实证明inx是一个指针。通常,我希望看到这个旧代码与0或NULL进行比较。这使我考虑了有符号和无符号的值以及可能的风险。
一些研究表明:
这些似乎表明一个地址(由malloc返回)永远不能为零。
这将我带到了标准的旧版本。
它特别指出两个空指针比较相等。
考虑到这一点,那小段代码是未定义的行为吗?还是我想念的难题还有另外一块?
最佳答案
这不是不确定的行为,但是如果inx
不为null,则结果不确定。
因此,您可以确保如果inx
为null,则条件代码将不会执行-但如果不是null,则不会执行。比较可能应该是inx != 0
,当且仅当inx
不为null时,该定义才正确。
关于c++ - 无效* p…; if(p> 0)…这是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23200872/