[英]Segmentation fault caused by repeating pop_back() and push_back()
当我使用 c++11 在 Clion(IDE)中运行以下代码时。 我遇到了分段错误。 但如果我删除 if 语句,在 pop_back 之前添加 else,删除 push_back,或删除 pop_back(分别执行)。 不会有错误。 那么为什么会出现分段错误以及为什么执行上述任何操作都会消除错误呢?
#include "vector"
using namespace std;
int main() {
vector<int> test;
for(int i = 0; i < 10000; i++){
if(i % 2 == 0)
test.push_back(i);
test.pop_back();
}
}
编辑:有人说这是因为 pop_back 来自空向量,但是如果我删除 push_back() 不会有任何问题(即使我在循环之前 push_back 一些元素)。
当向量为空时,您将从向量中弹出。 从空向量中使用pop_back()
会导致未定义的行为,这意味着:
考虑这段代码:
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> test;
for (int i = 0; i < 10; i++) {
if (i % 2 == 0)
test.push_back(i);
if (test.empty())
cout << "stack is empty" << endl;
else
test.pop_back();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.