Главная страница
    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.003 c
14-90357
РУС
2001-12-02 14:59
2002.01.28
Помнится тут был разговор о восстановлении зрения...


1-90281
Leva
2002-01-10 12:36
2002.01.28
StayOnTop-форма исчезает


4-90432
Анатолий
2001-11-29 17:48
2002.01.28
Список процессов.


14-90354
Semen
2001-11-21 10:42
2002.01.28
Отслеживание питания


4-90428
Alex870
2001-11-26 21:27
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский