почему это работает?
От: nen777w  
Дата: 13.10.06 07:17
Оценка:
известно что у 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



Кто то может объяснить почему?
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.