У меня есть конструктор, который выглядит следующим образом (в 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;
Теперь странно то, что я получаю segfault на tempDat-> clear (); GDB говорит, что tempDat является нулевым. Как это возможно? Конструктор tempDat не может выйти из строя, он выглядит так:
DataObject::DataObject() : current_max_id(0)
{
}
Я знаю, что, возможно, есть лучшие способы создания такой структуры данных, но мне действительно нравится знать, откуда возникает эта проблема с ошибками.