指针定义后 C++ vector.push_back 崩溃
Posted
技术标签:
【中文标题】指针定义后 C++ vector.push_back 崩溃【英文标题】:C++ vector.push_back crashes after pointer definition 【发布时间】: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++ 编译器的行为很奇怪。 - 这应该是你最不应该解决的问题。 【参考方案1】:temp
从未初始化为任何东西,因此当您通过*temp = pole[r][s]
分配给它时,您会得到未定义的行为,因为您尝试写入某个随机内存位置。将temp
初始化为合理的值。
【讨论】:
谢谢,写 kocka *temp;temp = &pole[r][s];解决了我的问题:) @Milos9304:你为什么要使用指针?kocka& temp = pole[r][s];
不是更明智吗?以上是关于指针定义后 C++ vector.push_back 崩溃的主要内容,如果未能解决你的问题,请参考以下文章