指针定义后 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&amp; temp = pole[r][s]; 不是更明智吗?

以上是关于指针定义后 C++ vector.push_back 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

关于c++指针赋值的问题

c++通过指针变量对键盘输入的字符串中的字符按ASCII码值从小到大排列有如下要求定义一个字符数组

C++原生指针,引用与智能指针

c++怎么定义API函数指针

在c++编程中,怎么定义对象数组的指针?

C++中内存分配问题