段错误取决于指针分配顺序

时间:2017-02-19 19:44:48

标签: c++ pointers

请考虑以下代码:

#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故障,我无法弄清楚原因。如果其中一个块被评论,那就没关系。如果第二个块放在第一个块的上方,那也没关系。这是怎么回事?

1 个答案:

答案 0 :(得分:5)

您无法取消引用ptr1,因为它未初始化。

话虽如此,*ptr1 = a不正确,并且您正在获取未定义的行为,这意味着此代码可能会或可能不会按预期工作。