· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Размер стека

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Апр 22, 2004 15:49:08

_DEN_
но тогда будет простаивать уже выделенное пространство под стек
пространство под стек выделяется только по мере разрастания стека, изначально стеку выделяется две (если не ошибаюсь) страницы памяти, так что простаивать ничего особенно не будет.
Про подмену стека посмотри здесь, может поможет...


Дата: Апр 22, 2004 16:07:32

[ _DEN_ : да че меня все стебать начинают? ]

Пишу по русски.
Вы попросили модератора, который и без того в восторге от многих постов :)
нарушить правила форума.
Причем информации найти эту книгу уже и так дали достаточно.
Я подумал, что нет смысла давать ссылку на google.com
Поэтому написал в кавычках то, что надо набрать в поисковике - ее название

ЗЫ
А Four-F и мне двал этот дельный совет. Хоть я так и не дочитал эту книжку =)


Дата: Апр 22, 2004 16:15:39 · Поправил: Four-F

[ _DEN_: "Чувак, функция такая-то" и закрыть на этом тему,... ]

ОК. При компиляции так (это для основного потока):

\masm32\bin\link /nologo /subsystem:windows /stack:0x777777,0x1000 %exe%.obj

Первое число - зарезервировать под стек 0x777777 байт, линкер округлит вверх до кратности четырем и станет 0x777778. Второе число - выделить из зарезервированного диапазона при старте потока 0x1000 байт. И + ещё 0x1000 под сторожевую страницу автоматом выделяется.

По умолчанию резервируется 0x100000, изначально выделяется 0x1000.


При запуске потока через CreateThread значения берутся из значений первичного потока.
Начальный выделенный размер меняется так:
CreateThread,,dwStackSize,...
Как поменять при создании потока зарезервированный размер стека не помню/знаю.

И срочно читать Рихтера. ВСЕМ :)))


Дата: Апр 22, 2004 16:33:36 · Поправил: Four-F

Да... забыл сказать. Система всё равно резервирует/выделяет память страницами. Так что 0x777778 будет округлено вверх до кратности размеру страницы. А если еще точнее, то я щас глянул под 2000 - вместо 0x777778 резервируется 0x780000, т.е. вверх до кратности 16-ми страницам!


Дата: Апр 22, 2004 16:45:15

Это хорошо, но если я С++ юзаю, то как тут быть?


Дата: Апр 22, 2004 16:50:42

а линкер для C++ ты какой используешь, не link.exe?


Дата: Апр 22, 2004 16:55:18

Дело не в линкере. Дело в том что я хочу давать стеку размер, зависящий от размера оперативы в целом. Тоесть хотелось бы динамического изменения размера стека. На сколько я понимаю мне нужна некая функция. Спасибо тов. Four-F, обязательно посмотрю описалово функций IoXXX, как только MSDN присуну (упал он у меня, бедный).


Дата: Апр 22, 2004 17:27:18

[ _DEN_: Тоесть хотелось бы динамического изменения размера стека. ]

Забей! Он и так динамически меняется системой по мере роста. Разервируется много, а расходуется сколько нужно. К тому же, если тебе понадобится стек размером больше мегабайта, как по умолчанию, это скорее свего будет говорить о неправильном подходе к программированию.



[ _DEN_: обязательно посмотрю описалово функций IoXXX ]

Это функции предназначены для использования драйверами.

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.152