我的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
答案 0 :(得分:6)
temp
永远不会被初始化为任何东西,所以当你通过*temp = pole[r][s]
分配它时,你会得到未定义的行为,因为你试图写入一些随机内存位置。将temp
初始化为合理的值。