【发布时间】:2010-04-03 10:12:33
【问题描述】:
我有一个看起来像这样的构造函数(在 c++ 中):
Interpreter::Interpreter() {
tempDat == new DataObject();
tempDat->clear();
}
dataObject 的构造函数什么都不做,clear 是这样做的:
bool DataObject::clear() {
//clear the object
if (current_max_id > 0) {
indexTypeLookup.clear();
intData.clear();
doubleData.clear();
current_max_id = 0;
}
}
这些成员定义如下:
std::map<int, int> indexTypeLookup;
std::map<int, int> intData;
std::map<int, double> doubleData;
现在奇怪的是我在 tempDat->clear(); 上遇到了段错误。 gdb 说 tempDat 为空。这怎么可能? tempDat 的构造函数不能失败,看起来是这样的:
DataObject::DataObject() : current_max_id(0)
{
}
我知道可能有更好的方法来制作这样的数据结构,但我真的很想知道这个段错误问题来自哪里..
【问题讨论】:
标签: c++ constructor map object segmentation-fault