字符串segfault的C ++向量

时间:2016-09-24 06:15:10

标签: c++ string vector c++14

谁能告诉我为什么会出现这种段错误?

vector<string> vec;
for (int i = 0; i < 1000000; /* 1 million */ i++) {
    vec.push_back("string"+i);
}

使用g++

-std=c++14中编译

2 个答案:

答案 0 :(得分:4)

正如panta-rei正确指出的那样,看起来你正试图包含一个形式的字符串

"string" + string form of (i)

但你实际上做的是指针运算,在这种情况下是不合逻辑的(你只是从某个位置传递一个指针递增i - 谁知道那个存储器里有什么?)。

为了做你想做的事,你可以使用std::to_string,它会将i翻译成一个合适的C ++字符串。添加了一个带有is OK的C风格字符串。

将您的行更改为

vec.push_back("string"+to_string(i));

答案 1 :(得分:2)

vector<string> vec;
for (int i = 0; i < 1000000; i++) {
    vec.push_back("string" + to_string(i));
}

这不是PHP ...