int main()
{
struct stuff
{
int num;
}*foo;
// If I comment the line below, I get core dump error.
// Why?
foo = (struct stuff *)malloc(sizeof(struct stuff));
(*foo).num = 7;
printf("%d\n", (*foo).num);
}
您只能取消引用一个有效的指针。
在您的情况下,foo
作为自动局部变量,除非明确初始化,否则包含一些不确定的值,即,它指向任意内存位置,从程序的角度来看,这几乎是无效的。
如果您没有分配一个有效的指针foo
(malloc()
例如由 返回),foo
指向某个不确定的内存位置并尝试取消引用它会调用未定义的行为。
分段错误是 UB 的副作用之一。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句