我有两种工作环境:
我使用两个系统,因为某些H / W不能与VB一起使用。 项目包括使用pthreads和ncurses。
突然间我在PC上出现了seg-fault错误,同时在Laptop + VB上一切正常。错误在线未连接到pthreads或ncurses 我正在使用Eclipse开发我的软件,迁移项目的过程是:
到目前为止一切正常。两者的工具链设置似乎相同。
CODE:
Config::~Config() {
std::map<std::string, Setting*>::iterator configIterator;
for(configIterator = config.begin(); configIterator != config.end(); ++configIterator){
delete configIterator->second;
}
config.clear();
}
delete 运算符上出现seg-fault。在 del 之前检查对象存在时,看起来所有这些都在内存中。
这是添加配置条目的方式:
config.insert(std::pair<std::string,Setting*>("language", new Setting("en_en")));
我的问题是双重的:
我知道这是分配或释放内存的东西,但我甚至不知道从哪里开始。我试图删除部分代码有错误,但这给了我更多错误在未知的地方。
[编辑] @comments如下:
我发现实际错误在to-string cast operator重载方法中,但是:
Setting::operator std::string(){
std::stringstream sstr;
switch(what){
case STRING: sstr << str; break;
case INT: sstr << i; break;
case FLOAT: sstr << f; break;
default: sstr << str; break;
}
sstr << std::flush;
return sstr.str();
}
当我改变它只返回一些虚拟字符串,如&gt;&gt;返回“x”&lt;&lt;没有seg-fault。 那么......上面的代码出了什么问题?为什么这适用于VB,但不适用于PC。