Вопрос по winapi, heap, stack, process, memory – Стек Windows и диапазоны адресов кучи

0

Работая с Linux до сих пор, когда адреса стеков очень высоки, а адреса кучи довольно низкие (как видно из печати адресов кучи и стека с помощью программы на C), у меня возникла проблема с разметкой памяти процесса Win32. MWSDN говорит, что адреса стека выше, чем адреса кучи, но, как я видел на практике, адреса стека ниже, чем адреса кучи. Так что я в замешательстве. Кто-нибудь, пожалуйста, объясните.

Где в MSDN это сказано? quantum

Ваш Ответ

1   ответ
3

stack addresses are higher than heap addresses - Это просто неправда. И стек, и куча могут находиться в любом месте адресного пространства процесса в Windows.

Если вы запустите много потоков, выделите огромную кучу и загрузите сотни библиотек, вы обнаружите, что все эти объекты равномерно распределены по адресному пространству.

enter image description here

На этом рисунке показана структура виртуальных выделений в типичном 32-разрядном процессе в Windows. Зеленый показывает свободные области, синий, что-то выделено. Активность в основном происходит в начале адресного пространства, но в других диапазонах адресов она также присутствует.

Понимаю. Они дают примеры схем памяти для простых процессов. Да, если вы загрузите 2-3 dll и начнете один поток, 99% вероятности, что у вас будет макет, аналогичный этим примерам (кстати, на Win7 он может легко отличаться от XP). Но в большом серверном процессе, в котором размещены сотни потоков, вы можете иметь любой макет.
Не совсем понятно ...?
Вы можете заметить, что все адреса стека во всех ваших потоках находятся в нижней части адресного пространства, а выделения кучи - в более высоких адресах. Я хочу знать, нормально ли это для Windows. Если нет, то где это сказано и более подробно? Vladimir Gazbarov
Эта статья MSDN относится только к: Microsoft & # xAE; Окна & # XAE; CE .NET, Microsoft Windows CE 3.0, Pocket PC 2002.
смотря наmsdn.microsoft.com/en-us/library/ms836325.aspx Вы можете сказать, что куча выше, но это не так. Vladimir Gazbarov

Похожие вопросы