Форум: "WinAPI";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
ВнизExe, dll и все-все-все..., или Найти похожие ветки
← →
Cobalt (2001-11-27 23:42) [0]Вопрос навеян работой с различными функциями...
1) Енумерую я что-либо(например имена ресурсов в модуле), указываю callback-функцию, которая получает в качестве одного из параметров - PChar;)
Память, выделенная под эту строку - находится в моём сегменте данных? (Ну, наверное - если не Access Violation)
А вот память эту выделяет dll-ка(типа, user.dll). При помощи какого менеджера памяти - дельфийского? Или какого-то своего, системного?
2) Кажная прога(подразумевается один процесс и поток) при загрузке получает один сегмент данных, один сегмент кода и стек. (Правильно?)
Когда прога загружает(динамически) dll-ку, то в адресное пространство(кода) добавляется кусок кода dll-ки, ей выделяется собственный сегмент данных и стек.(Или тоже добавляются к существующему?)
Когда dll-ка выгружается, то код освобождается точно, а вот сегмент данных?
Что происходит с памятью, динамически выделенной в функциях dll-ки?
← →
paul_shmakov (2001-11-28 02:41) [1]когда загружается процесс для него создается виртуальное адресное пространство (4Гб). большая часть этого пространства свободна (free), часть зарезервирована (reserved) (т.е. физическая память (озу или своп-файл) под нее не отдана), часть сопоставлена с физической памятью (commited).
в это же адресное пространство загружаются все dll (и статически загруженные, и динамически).
каждому потоку выделяется свой личный стек. именно потоку, а не процессу или dll.
теперь конкретно по вопросам.
1) "При помощи какого менеджера памяти - дельфийского? Или какого-то своего, системного?"
своего. хотя свой вполне может оказаться дельфийским, если dll написана на delphi :) но в любом случае, dll может выделять память так, как ей в голову взбредет. и не стоит по этому поводу делать каких-либо предположений.
2) на большую часть я уже ответил.
"Что происходит с памятью, динамически выделенной в функциях dll-ки?"
если dll при своей выгрузке эту память не освободила, то память не будет освобождена до завершения процесса.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c