C++中指针与内存问题
在面试宝典上看到这么一题:
下列程序会在哪一行崩溃?
struct S {
int i;
int * p;
};
main()
{
S s;
int *p=&s.i;
p[0]=4;
p[1]=3;
s.p=p;
s.p[1]=1;
s.p[0]=2;
}
这里答案是s.p[0]=2;行程序会崩溃。
我想问的是在int * p=&s.i;这行中,i之前并没有被赋值,这样做会不会使p成为一个
野指针?不会的话是为什么?
另外,C++中声明一个变量但未定义此变量时到底会不会给这个变量分配内存?