【问题标题】:C++ vector.push_back crashes after pointer definition指针定义后 C++ vector.push_back 崩溃
【发布时间】:2014-07-08 22:02:58
【问题描述】:

我的 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);

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

但是,这会导致错误 Segmentation Fault:

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 编译 你知道为什么它会以这种奇怪的方式表现吗?谢谢

【问题讨论】:

  • 我的 C++ 编译器的行为很奇怪。 - 这应该是你最不应该解决的问题。

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


【解决方案1】:

temp 从未初始化为任何东西,因此当您通过*temp = pole[r][s] 分配给它时,您会得到未定义的行为,因为您尝试写入某个随机内存位置。将temp 初始化为合理的值。

【讨论】:

  • 谢谢,写 kocka *temp;temp = &pole[r][s];解决了我的问题:)
  • @Milos9304:你为什么要使用指针? kocka&amp; temp = pole[r][s]; 不是更明智吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多