#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};
struct node* insert(struct node *root) {
root->data = 12; //here
return root;
}
int main() {
struct node *root;
insert(root);
return 0;
}
我的程序在insert
函数中放置评论的位置是不是因为我没有使用malloc
初始化它?
答案 0 :(得分:3)
这称为undefined behavior 你永远不知道会发生什么。冲突仍然是可能的。
使用未初始化的variabled导致未定义的行为。
答案 1 :(得分:-1)
只需添加一个printf进行一些测试:
printf("root is %p\n", root);
一些结果:
Airbus /tmp » ./a.out
root is 0x7fff50b84a08
Airbus /tmp » ./a.out
root is 0x7fff5d1a6a08
Airbus /tmp » ./a.out
root is 0x7fff5ed7da08
Airbus /tmp » ./a.out
root is 0x7fff5c7f5a08
Airbus /tmp » ./a.out
root is 0x7fff5fb3aa08
Airbus /tmp » ./a.out
root is 0x7fff5c16ea08
Airbus /tmp » ./a.out
root is 0x7fff579a8a08
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
我在我的gentoo中得到了段错误:
[1] 8390 segmentation fault
gcc version 4.5.4 (Gentoo 4.5.4 p1.2, pie-0.4.7)