只是一个好奇的问题。如果我尝试从具有 NULL
值的地址访问数据,会发生什么情况。
例如:如果我有一个存储 ulog
的结构指针 NULL
并且编译器(在我的例子中是 GCC)遇到 ulog->data=12
?
我主要想知道这是否会扰乱我的内存,与控制语句一起使用时是否返回 NULL
以及编译器会发生什么情况?
最佳答案
清除条款:
- 宏
NULL
是一个空指针常量(7.19/3)。 - 空指针常量可以是值
0
或(void*)0
(6.3.2.3/3)。 - 当将空指针常量分配给任何类型的指针时,生成的指针将变为空指针,保证与任何其他指针(指向对象或函数)比较不相等)(6.3.2.3/3)。
您无法真正知道给定系统上空指针的实际表示。如果您尝试像有效地址一样访问它,会发生什么情况,但标准并未指定 - 这是未定义的行为。
意味着任何事情都可能发生,包括段错误、总线错误、什么都没有、程序开始疯狂运行等等。
关于c - 尝试在C中通过空地址访问数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52853914/