【发布时间】:2025-11-26 22:05:03
【问题描述】:
考虑以下一段 C++ 代码:
int main() {
int* ptr; // Deliberately uninitialized
(void) *ptr; // Dereference, do not use result
}
此代码是否会导致未定义的行为?我假设答案是“是”,即使 *ptr 的值实际上并未在任何地方使用。规范中是否有特定部分可以保证这一点?
(如果这是重复的,我深表歉意,但我似乎在网站上找不到任何其他专门提出这个问题的内容。)
【问题讨论】:
-
至少未定义的行为不受 as-if 规则的约束。 :)
-
你为什么在乎?为什么要在不使用值的情况下取消指针?
-
If a tree falls in a forest 哲学难题的 C++ 等价物。
-
如果委员会花时间回答“如果取消引用无效指针但结果被丢弃会发生什么”的问题,我会非常失望。俗话说“这就是为什么我们可以没有好东西”
-
请注意 (*.com/questions/4285895/…) 中的讨论,由 @MarinosK 提出
标签: c++ pointers language-lawyer