[英]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.