This question already has answers here:
Why do these pointers cause a crash?
(5个答案)
2年前关闭。
(5个答案)
2年前关闭。
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
指向某个不确定的内存位置,并尝试取消引用它将调用undefined behaviour。
分段错误是UB的副作用之一。
关于c - 为什么在评论malloc()调用时出现段错误(内核已转储)? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52903287/
10-15 00:23