|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 22, 2004 13:24:28 Сабж, собственно.. Есть какие-то рекомендации, ограничения? |
|
|
Дата: Апр 22, 2004 14:09:09 Если в ядре, то мало... очень мало... очень мало. А лучше вообще для этого в стеке память не выделять. Если в юзере, то: http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=2098 http://www.wasm.ru/forum/index.php?action=vthread&forum=5&topic=2323 http://www.wasm.ru/forum/index.php?action=vthread&forum=3&topic=4615 Asterix, тебе тоже - читать Рихтера :) |
|
|
Дата: Апр 22, 2004 14:16:03 · Поправил: BLOb Не знаю, сколько можно выделить максимально (память под стек же динамически выделяется по мере его роста), но я в делфи регулярно описывал локальные массивы ~10K и в исходниках его runtime и VCL выделение ~4K - обычное дело. Если будешь выделять руками >4K (sub esp, size) - главное через guard page не пролететь. Делфи при >4K делает в цикле вроде этого: add esp,-4092 push ecx :-) Пока отвечал, Four-F интересные ссылки положил |
|
|
Дата: Апр 22, 2004 14:32:19 Спасибо, Four-F. Я честно пытался искать по форуму, но как-то не срослось, видимо ключевые слова для поиска выбирал не те.. |
|
|
Дата: Апр 22, 2004 14:56:34 Почитал все эти умные рассуждения, но решил переспросить совсем по тупому, push ebp mov ebp, esp sub esp, X Скольким байтам максимально может быть равен этот X чтоб ситуация не выходила из под контроля и винде не приходилось использовать всяческие защитные механизмы. sub esp, 4096 ; Это нормально? |
|
|
Дата: Апр 22, 2004 15:29:21 · Поправил: BLOb sub esp, 4096 ; Это нормально? В худшем случае после этого esp будет указывать за guard page, и, скажем, какой-нибудь call вызовет exception Надо sub esp, 4092; push eax Здесь esp в любом случае указывает или на уже выделенную страницу или на guard page и push eax в нее тыркнется, чем вызовет автоматическое выделение новой страницы Или обратиться после sub esp, 4096 к памяти [esp+xxx], xxx меньше 4K |
|
|
Дата: Апр 22, 2004 16:15:19 [ Asterix: Почитал все эти умные рассуждения, но решил переспросить совсем по тупому,... ] Т.е. ты не хочешь Рихтера читать. :) |
|
|
Дата: Апр 22, 2004 17:36:26 Читаю, но не уверен в правильном понимании прочитанного ;-) |
|
|
Дата: Апр 23, 2004 11:21:05 Asterix - прошу прощения за тупой вопрос, но чем heap не нравится...? |
|
|
Дата: Апр 23, 2004 11:37:28 Нравиться, просто я хотел знать что можно сделать со стеком. |
|
|
Дата: Апр 23, 2004 11:49:41 [ Asterix: Читаю, но не уверен в правильном понимании прочитанного ;-) ] Там в разделе "A Thread's Stack" даже картинки показывают :) Тебе главное за guard page не заступить. |
|
|
Дата: Апр 23, 2004 13:21:51 [ Four-F: Там в разделе "A Thread's Stack" даже картинки показывают :)] Ага :-) Но я теперь уже точно уяснил что до 4kб можно смело выделять, обычно мне требуется ещё меньше ;-) |
|
|
Дата: Май 12, 2004 09:18:03 · Поправил: Oleg_SK Asterix Но я теперь уже точно уяснил что до 4kб можно смело выделять... IMHO, это не так! Смело можно выделять не больше чем N байтов. Формула вычисления значения N, следующая: N = ESP - M, где M - адрес ближайшей нижней границы страницы (т.е. кратный: 4096). В противном случае, ты рискуешь нарваться на проблемы%)) |
|
|
Дата: Май 12, 2004 15:04:41 Asterix прав. Именно до 4kб. Т.к. максимум ты рискуешь нарваться на сторожевую страницу. В этом случае она будет сделана доступной для чтения, а сторожевая сместиться вниз, если конечно это не предел стека. Тогда уже проблемы. |
|
|
Дата: Май 12, 2004 15:08:18 Four-F Не зря я этот пост сделал! Не зря... Хотя и неправ оказался, но зато узнал от вас то, до чего сам не допер! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.053 |