Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.004 c
4-90409
Dimbambon
2001-11-24 22:51
2002.01.28
КАК СДЕЛАТЬ, ЧТО БЫ ПРИ ЗАПУСКЕ МОЯ ПРОГРАММА В Labele ОТОБРАЖАЛА ПРОИЗВОЛЬНОЕ ЧИСЛО?


6-90341
Dinara
2001-11-06 02:32
2002.01.28
Использование Indy


3-90224
EternalWonderer
2001-12-24 17:20
2002.01.28
Проблема с count(*) в joined запросе


1-90309
Hair_Fly
2002-01-11 11:07
2002.01.28
Как при компиляции задавать имя exe-файла ?


7-90391
Dmitriy-5
2001-10-10 14:49
2002.01.28
Как работать с адресом памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский