#include<stdio.h>
typedef struct path{
struct path* begin;
struct path* end;
}PATH;
int main(){
PATH* path;
path->begin=NULL;
/* path->end=NULL;*/
printf("OK\n");
}
注释掉那一行后,正常执行;
加上注释掉的那一行后,编译没问题,但执行报错:
OK
segmenttation fault
;求解为何?
而下面这种{
......
int* p1=NULL;
int* p2=NULL;
......
}
能正确执行;
综上,我很困扰啊!!!
你看下我问题,
PATH* path;
path->begin=NULL;
这样是不报错也能正确执行的;问题是再加上path->end=NULL;就出错了。你的回答跟我的问题没关系吧
==================================================================
你的方法可行,但是我困扰的是为何赋值一个的时候可以执行,两个都赋值就不能执行了
这个取决于 path的值, 比如它刚好指到一个可写的区域,就两句都能执行,如果它指到可写区域的边缘,就只能执行一句。 但是,即使不报错,也绝对不能这样写,因为它改写了一个不确定的内存,会导致程序崩溃或者异常。