指针定义后C ++ vector.push_back崩溃

时间:2014-07-08 22:02:59

标签: c++ c++11 vector segmentation-fault push-back

我的C ++编译器表现得非常奇怪。

我的矢量是全球定义的:

vector<int> values;

这不会导致任何错误:

void locate( int r, int s, bool newCheck, int from = 0 ){

static int A = 255;
static int U = 1;
static int D = 2;
static int R = 3;
static int L = 4;

values.push_back(0);

kocka *temp;
*temp = pole[r][s];    

values.push_back(1);

.........................

但是,这会导致错误分段错误:

void locate( int r, int s, bool newCheck, int from = 0 ){

static int A = 255;
static int U = 1;
static int D = 2;
static int R = 3;
static int L = 4;

//values.push_back(0);

kocka *temp;
*temp = pole[r][s];    

values.push_back(1);

...........................

用g ++ -O2 -std = c ++ 11编译 你知道为什么它会表现出这种奇怪的方式吗? THX

1 个答案:

答案 0 :(得分:6)

temp永远不会被初始化为任何东西,所以当你通过*temp = pole[r][s]分配它时,你会得到未定义的行为,因为你试图写入一些随机内存位置。将temp初始化为合理的值。