У меня есть указатель на карту, которую я пытаюсь удалить (эта карта была назначена новой).
Эта карта действительна, я думаю, когда я нахожу ее во время отладки, она показывает pMap
: [0]()
..
Когда я пытаюсь удалить эту пустую карту, мое приложение просто закрывается, и я получаю
Исключение первого шанса при 0xsomelocation в myapp.exe: 0xsomenumber: вызванный объект отключился от своих клиентов.
в окне вывода. Что это значит?
Спасибо ..
РЕДАКТИРОВАТЬ: Вот пример кода:
typedef map<const char*, StructA*, StructB> myMap;
typedef vector<myMap *> myMapStack;
StructB имеет перегруженный оператор ()
Редактировать: StructB - это действительно структура, извините, operator () - это просто функция сравнения строк ..
В некоторой части моего кода конструктор класса вызывает метод, давайте назовем его InitClass (), который инициализирует указатель myMap следующим образом:
pMyMap = new myMap; // I also tried this with new myMap()
// this pointer is then pushed onto the a map stack
pMyMapStack.push_back(pMyMap);
Позже в этом классе деструктор, я иду
pMyMap = pMyMapStack.back();
pMyMapStack.pop_back();
delete pMyMap; // after I step over this line the app quits.. and displays that message
Спасибо
РЕДАКТИРОВАТЬ: я вернулся к старой версии кода, который работал, и теперь он работает нормально ..
То, что сработало, было примерно так:
// after the pMyMapStack.pop_back()
int x = pMyMap->size();
if (x >= 0)
delete pMyMap;
Ранее я изменил это на:
// after the pMyMapStack.pop_back()
int (x = pMyMap->size();
if (x >= 0){
pMyMap->clear();
delete pMyMap;
}
Странно ... Возможно, в коде что-то не так, но я просто не могу понять, где это еще ... Это слишком большой (и я, вероятно, уволен), если я выложу код целиком, так давайте просто оставим это на этом ..
Я думаю, это мог быть указатель на нулевую карту, которую я пытался очистить или удалить, что вызывало проблемы ..
Спасибо всем, кто пытался помочь ...:)