Ano*_*ous 2 c pointers initialization segmentation-fault
所以,我尝试过这样的事情:
void place(struct node * list, int elem){
struct node *tmp = list;
struct node *prev ;
while(tmp && tmp->info <= elem){
prev = tmp;
tmp = tmp->next;
}
struct node *new = (struct node *)malloc(sizeof(struct node));
new->info = elem;
new->next = prev->next;
prev->next = new;
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个分段错误.gdb没有帮助 - 显示了000000和??的回溯.
但是当我尝试这个时:
void place(struct node * list, int elem){
struct node *tmp = list;
struct node *prev = tmp;
while(tmp && tmp->info <= elem){
prev = tmp;
tmp = tmp->next;
}
struct node *new = (struct node *)malloc(sizeof(struct node));
new->info = elem;
new->next = prev->next;
prev->next = new;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常!两者之间的唯一区别是我在第二种情况下初始化局部变量指针prev,而在第一种情况下我没有这样做.但我不明白为什么第一种情况应该是分段错误?
有人可以解释一下吗?
谢谢!
| 归档时间: |
|
| 查看次数: |
663 次 |
| 最近记录: |