2015-08-13 1 views
3

Когда я загружаю DLL в программу, как это происходит в памяти? Загружается ли он в мое виртуальное адресное пространство? Если это так, где хранятся сегменты текста и данных? У меня есть 32-разрядная программа, которую я поддерживаю, которая использует большую часть доступной кучи для подпрограмм обработки изображений, и я хочу знать, насколько я должен беспокоиться о загрузке DLL, которые сами могут использовать много места.Как DLL-файлы отображаются в виртуальные адресные пространства текущих программ

ответ

0

Да: все, что должен получить ваш процесс, должно быть в его адресном пространстве. Это относится и к вашему коду, и к вашим данным.

Здесь вы найдете более подробную информацию о anatomy of process memory and adress space и здесь объясняется, что dll are loaded into the virtual adress space.

Примечание. DLL может использоваться совместно несколькими процессами: она затем загружается только один раз в память операционной системой. Но каждый процесс, использующий его, потенциально может видеть его в другом месте в своем собственном пространстве виртуального адреса (см. Также этот SO answer об относительных виртуальных адресах).

Смежные вопросы