【发布时间】:2012-11-30 19:15:59
【问题描述】:
在 C 和 C++ 中,空指针取消引用是未定义的行为。 Objective-C 呢?
换句话说,这段代码保证能做什么?
*(long*)0 = 0;
背景:我想知道this answer 是否会触发未定义的行为,这可能会导致随机的事情,比如语句被优化甚至更奇怪的事情。
当然,我不赞成这样做。尽管如此,了解语言的规则还是很重要的。
【问题讨论】:
-
无论哪种方式,您的代码都应该避免这样做。
-
据我了解,nil 定义为 (id)0。向 nil 发送消息不会做任何事情——运行时会忽略它。
标签: objective-c c undefined-behavior