Стек Windows и диапазоны адресов кучи

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

 quantum09 февр. 2013 г., 05:26
Где в MSDN это сказано?

Ответы на вопрос(1)

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

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

enter image description here

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

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

Ваш ответ на вопрос