【发布时间】:2020-07-02 03:28:18
【问题描述】:
以下代码在循环重复 16 次后出现段错误。使用 gdb 进行调试时,*col 等于 'a',除非在迭代中出现段错误,此时它突然变为 '\036'。这已在 WSL Debian 上的 gcc 6.30 和 clang 3.8.1 上进行了测试。
这个错误的原因可能是什么?
#include <iostream>
#include <string>
int main(void) {
std::string line = "";
std::string::iterator col = line.begin();
for (int i = 0;; i++) {
std::cout << line << std::endl;
std::cout << i << std::endl;
line.insert(col, 'a');
}
}
编辑:是的,有一个无限循环,我知道这一点。这仅适用于 MCVE。
【问题讨论】:
-
修复此迭代器问题后,您会看到这也是一个无限循环,会填满
string,直到程序崩溃。不过你可能已经知道了。 -
是的,无限循环只是用于stackoverflow的示例。
标签: c++ string iterator segmentation-fault