我仍在从 Java 迁移到 C++,并且正在为字符串而苦苦挣扎。我需要生成一些字符串并将它们存储在某个地方,以便在创建它们的对象被销毁后它们可供我的程序使用。我尝试将它们存储在字符串向量中,但我得到了Segmentation Fault-double free。我正在做的一个基本版本,它重现了这个问题:
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
std::string makeString(){
std::stringstream s;
s << "Test string";
return s.str();
}
int main(){
std::vector<std::string> storage;
storage.reserve(1);
storage[0] = makeString();
return 0;
}
调试器在行中标记错误:
storage[0] = makeString();
我将非常感谢这里发生的事情以及如何避免它的见解。