спасибо, что посмотрели на мою проблему.
У меня есть объект, который динамически создается в моей программе.Создание является частью цикла, и первая итерация работает нормально.
После создания базовый класс моего объекта добавляется на карту.
Вот пример кода:
public class Base {
Base() {
// Add itself to a map
Data::objects[key] = this;
}
}
public class Derived : public Base {
// This ctor only initialize one int field.
Derived() : Base() {};
}
Вроде просто, не правда ли?
В моем коде я делаю Derived * d = new Derived();
и по какой-то глупой причине я получаю SIGSEGV.
Я попытался отладить его, но он даже не входит в ctor перед сбоем!
Вот мой стек вызовов, так что вы можете помочь мне лучше:
Адрес: @ 0x002c0000
ntdll!RtlReleasePebLock ()
Адрес: @ 0x0000000c по адресу c: ... \ stl_deque.h: 514
msvrct! Malloc ()
libstdc ++ - 6! _Znwj ()
fu87 _ZSt4cerr (this = 0xbc1ad8, e = "// имя моего объекта //") в // имени моего объекта //. Cpp
... Другие мои строки.
Спасибо, Микаэль
{наслаждайтесь}
Редактировать: Добавление информации о карте
Карта расположена в классе данных, статически.
// Data.h
class Data {
static map<int, Base*> objects;
}
// Data.cpp
#include "Data.h"
map<int, Base*> Data::objects;
// methods implementations
Как вы можетеразвратить кучу, как я могу найти коррупцию произошлод?