Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер стека программы? Как определит размер стека программы? 
:(
    Опции темы
GSasha
Дата 20.1.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Добрый день. 
Возможно ли, если да то каким способом, узнать размер стека программы?
Спасибо.

Это сообщение отредактировал(а) GSasha - 20.1.2009, 18:23
PM MAIL ICQ   Вверх
pan2004
Дата 20.1.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 1
Всего: 9



хех... Получить значение регистра процессора - базы или вершины стека. Так как он растет сверху вниз, то данные числа и дадут "размер".
Но все это платформозависимо


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
GSasha
Дата 20.1.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Примерно понял, но можно пример или типа этого... 
Как такое на практике сообразить.
thx
PM MAIL ICQ   Вверх
GoldFinch
Дата 20.1.2009, 19:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



какая ОС? максимальный размер? минимальный размер? текущий размер у запущенной программы?
PM MAIL ICQ   Вверх
GSasha
Дата 20.1.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(GoldFinch @ 20.1.2009,  19:06)
какая ОС? максимальный размер? минимальный размер? текущий размер у запущенной программы?

OS WindowsXP.
Это один из тестовых вопросов, который дословно звучит: Как определить размер стека программы?
Я думаю, что имеется ввиду текущий размер у запущенной программы.
PM MAIL ICQ   Вверх
MAKCim
Дата 20.1.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(GSasha @  20.1.2009,  18:32 Найти цитируемый пост)
Примерно понял, но можно пример или типа этого... 

вот пример для Linux x86-64 (если стек не рандомизируется)
Код

unsigned long rsp;
asm("movq %%rsp, %0" : "=r" (rsp));
rsp = ((1UL << 47) - rsp - 1) & ~(PAGE_SIZE - 1);

rsp - минимальная граница


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GSasha
Дата 20.1.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата(MAKCim @  20.1.2009,  19:15 Найти цитируемый пост)
вот пример для Linux x86-64 (если стек не рандомизируется)

К сожалению без комментариев мне не разобраться  с этим примером, работаю под WinXP.
Мне всего лишь нужно ответить на вопрос из теста: Как определить размер стека программы?
И если честно, меня этот вопрос в замешательство привел.
PM MAIL ICQ   Вверх
GoldFinch
Дата 20.1.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



GSasha, программа состоит из потоков, у каждого потока размер стека может быть свой
у 1го потока при запуске программы размер стека такой который указан в заголовке программы
у остальных потоков размер либо такойже либо другой
в процессе работы программы размер и расположение стека может меняться, хз еще что считать стеком, в esp можно чтоугодно засунуть
PM MAIL ICQ   Вверх
GSasha
  Дата 20.1.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



GoldFinch , спасибо Вам большое.
Я кое какими знаниями обладаю насчет организации процессов и потоков в Windows-системах, и про стеки потоков мне также известно. 
Но вот данный вопрос мне не дает покоя, точнее - нет ответа на него.
Как бы Вы ответили на него... Вопрос я выше процитировал.

PM MAIL ICQ   Вверх
GoldFinch
Дата 20.1.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



ну допустим я бы ответил что размер стека надо прочитать из TEB
PM MAIL ICQ   Вверх
GSasha
Дата 20.1.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Так-так, это что-то интересное.
К TEB я еще не добирался, полезное направление для расширении кругозора.
Пока что понятие не имею про ТЕВ, но послушаю ваш совет, и постараюсь дорыться все-таки. 
PM MAIL ICQ   Вверх
GoldFinch
Дата 20.1.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



PM MAIL ICQ   Вверх
GSasha
Дата 21.1.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



Ок, разрулю полезного отпишусь. smile
PM MAIL ICQ   Вверх
mes
Дата 21.1.2009, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(GSasha @  20.1.2009,  18:36 Найти цитируемый пост)
Мне всего лишь нужно ответить на вопрос из теста: Как определить размер стека программы?

Что то мне подсказывает, что Вы вопрос неправильно процитировали ...
нельзя ли еще парочку вопросов из той же категории теста ?
 smile 

Это сообщение отредактировал(а) mes - 21.1.2009, 02:42


--------------------
PM MAIL WWW   Вверх
GSasha
Дата 21.1.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 23.3.2008
Где: Ukraine

Репутация: нет
Всего: нет



mes, вопрос именно так и звучит: Как определить размер стека программы?
Остальные вопросы типа: Свойства статической переменной... Разница между процессом и потоком... и т д 

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2173 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.