Динамически размещенный объект удаляется перед вызовом delete? - PullRequest
0 голосов
/ 30 декабря 2011

Я пытаюсь внедрить систему плагинов, но у меня возникли некоторые проблемы. В плагине DLL у меня есть что-то вроде этого кода:

extern "C" __declspec(dllexport) void InitPlugin(PluginManager* pMgr)
{
    pMgr->RegisterPlugin(new MyPluginObject);
}

MyPluginObject происходит от чисто виртуального класса PluginObject. В PluginManager::RegisterPlugin() указатель на объект плагина сохраняется для последующего использования. Я могу успешно вызвать функцию в MyPluginObject из RegisterPlugin(), но как только возвращается InitPlugin, я получаю нарушение прав доступа всякий раз, когда пытаюсь использовать объект плагина, который был сохранен в RegisterPlugin(). Как мне это исправить?

1 Ответ

1 голос
/ 30 декабря 2011

Ну, конечно, я задаю вопрос здесь, и сам разберусь через 10 минут.Проблема на самом деле не имела к этому никакого отношения, вместо этого я использовал свой собственный класс для обработки загрузки DLL-файла.Оказывается, что класс был случайно удален раньше, чем ожидалось, и он выгружал DLL с ним, что делало все недействительным из DLL.

...