известно что у dll подгружаемой динамически и приложения две разные кучи памяти и две разные точки входа.
допустим у dll есть глобальная ф-ция создающая некоторый объект типа class возвращаемый приложению.
класс экспортится / импортиться через дериктиву __declspec(dllexport / dllimport)
По идее приложение не может управлять (вызывать методы) у такого объекта, т.к. таблица виртуальных ф-ций лежит в куче dll, но
каким то чудным образом это работает.
т.е. в коде это вот так примерно:
HMODULE hM = LoadLibrary("some.dll");
m_pfnSomeGlobalProcCreateClassSomeClass = GetProcAdress(hM, "SomeGlobalProcCreateClassSomeClass");
SomeClassBase* p = m_pfnSomeGlobalProcCreateClassSomeClass();
p->call_virtual_method(); //ok
p->call_non_virtual_method(); //ok
Кто то может объяснить почему?
Спасибо.