| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Размер стека программы? |
| Автор: GSasha 20.1.2009, 18:22 |
| Добрый день. Возможно ли, если да то каким способом, узнать размер стека программы? Спасибо. |
| Автор: pan2004 20.1.2009, 18:24 |
| хех... Получить значение регистра процессора - базы или вершины стека. Так как он растет сверху вниз, то данные числа и дадут "размер". Но все это платформозависимо |
| Автор: GSasha 20.1.2009, 18:32 |
| Примерно понял, но можно пример или типа этого... Как такое на практике сообразить. thx |
| Автор: GoldFinch 20.1.2009, 19:06 |
| какая ОС? максимальный размер? минимальный размер? текущий размер у запущенной программы? |
| Автор: GSasha 20.1.2009, 19:13 | ||
OS WindowsXP. Это один из тестовых вопросов, который дословно звучит: Как определить размер стека программы? Я думаю, что имеется ввиду текущий размер у запущенной программы. |
| Автор: MAKCim 20.1.2009, 19:15 | ||
вот пример для Linux x86-64 (если стек не рандомизируется)
rsp - минимальная граница |
| Автор: GSasha 20.1.2009, 19:36 |
К сожалению без комментариев мне не разобраться с этим примером, работаю под WinXP. Мне всего лишь нужно ответить на вопрос из теста: Как определить размер стека программы? И если честно, меня этот вопрос в замешательство привел. |
| Автор: GoldFinch 20.1.2009, 19:53 |
| GSasha, программа состоит из потоков, у каждого потока размер стека может быть свой у 1го потока при запуске программы размер стека такой который указан в заголовке программы у остальных потоков размер либо такойже либо другой в процессе работы программы размер и расположение стека может меняться, хз еще что считать стеком, в esp можно чтоугодно засунуть |
| Автор: GSasha 20.1.2009, 21:29 |
| GoldFinch , спасибо Вам большое. Я кое какими знаниями обладаю насчет организации процессов и потоков в Windows-системах, и про стеки потоков мне также известно. Но вот данный вопрос мне не дает покоя, точнее - нет ответа на него. Как бы Вы ответили на него... Вопрос я выше процитировал. |
| Автор: GoldFinch 20.1.2009, 21:38 |
| ну допустим я бы ответил что размер стека надо прочитать из TEB |
| Автор: GSasha 20.1.2009, 22:43 |
| Так-так, это что-то интересное. К TEB я еще не добирался, полезное направление для расширении кругозора. Пока что понятие не имею про ТЕВ, но послушаю ваш совет, и постараюсь дорыться все-таки. |
| Автор: GoldFinch 20.1.2009, 22:55 |
| http://www.google.ru/search?q=размер+стека+TEB 1я ссылка |
| Автор: GSasha 21.1.2009, 00:08 |
| Ок, разрулю полезного отпишусь. |
| Автор: GSasha 21.1.2009, 16:07 |
| mes, вопрос именно так и звучит: Как определить размер стека программы? Остальные вопросы типа: Свойства статической переменной... Разница между процессом и потоком... и т д |
| Автор: GSasha 22.1.2009, 19:52 | ||
Сможет ли данная функция правильно определить текущий размер стека?
|
| Автор: GoldFinch 23.1.2009, 00:46 |
| а зачем так сложно? надо сразу страницы переребирать, а не по 4байта и где гарантии что по адресу выше стека будет нечитаемая страница? и проверять лучше не на чтение а на запись |
| Автор: georain 23.1.2009, 19:07 | ||
Может как-то так пойдет?
|
| Автор: GSasha 23.1.2009, 19:26 |
Может и пойдет, но до main размера стека нету. Неполный стек а только кусок его, если я не ошибаюсь... |
| Автор: Мурлыкатам_ 5.3.2009, 14:21 |
| Размер стека = 1 МБ http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx |
| Автор: GoldFinch 5.3.2009, 14:31 |
| некропостер =\ |