Страница Создание C / C ++ DLL в Visual Studio говорит следующее во втором абзаце:
DLL не является автономным исполняемым файлом. DLL работают в контексте приложений, которые их вызывают. Операционная система загружает DLL в область памяти приложения . Это делается либо при загрузке приложения (неявное связывание), либо по требованию во время выполнения (явное связывание). DLL также облегчают совместное использование функций и ресурсов между исполняемыми файлами. Несколько приложений могут одновременно получать доступ к содержимому одной копии DLL в памяти.
Правильно ли выделенное предложение? Как это утверждение может быть согласовано с первым пунктом в Преимущества Dynami c Связывание , содержание которого я воспроизвожу ниже:
- Несколько процессов, которые загружают один и тот же DLL по тому же базовому адресу разделяют одну копию DLL в физической памяти. Это экономит системную память и уменьшает объем подкачки.
Итак, если в памяти есть одна копия DLL, как ее можно загрузить в область памяти приложения?