请考虑以下代码:
#include <iostream>
int main()
{
// ok by itself
int *ptr1;
int a = 3;
*ptr1 = a;
// ok by itself
int *ptr2 = new int(4);
delete ptr2;
}
这会导致seg故障,我无法弄清楚原因。如果其中一个块被评论,那就没关系。如果第二个块放在第一个块的上方,那也没关系。这是怎么回事?
答案 0 :(得分:5)
您无法取消引用ptr1
,因为它未初始化。
话虽如此,*ptr1 = a
不正确,并且您正在获取未定义的行为,这意味着此代码可能会或可能不会按预期工作。