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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что такое стек ? 
:(
    Опции темы
Farhod
Дата 24.7.2002, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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




Что такое стек ?
спасибо
PM MAIL   Вверх
Vit
Дата 24.7.2002, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago




Очередь. Примерно тоже что и рожок с патронами для автомата - туда можно что-то засунуть для хранения, и можно вытащить, но только в той очерёдности в которой оно засунуто. Например у тебя есть три функции:

F1, F2, F3. функция F1 вызывает F2, а внутри F2 происходит вызов F3.

Процессор обрабатывает код из F1, натыкается на F2, теперь всё что нужно было для работы с F1 (код и переменные) надо где-то запомнить, чтобы вернуться после обработки F2, так вот это всё и заталкивается в стек, далее управление передаётся F2. К моменту вызова F3, F2 тоже засовывается в стек. Теперь, когда F3 выполнена из стека достаётся F2, когда закончим с F2, достаётся F1...

Правда с современными компилляторами и событийным программированием всё обстоит гораздо сложнее но стек всё равно очень интенсивно используется.

У стека есть еще одно основополагающее свойство - заранее, на этапе разработки, никак нельзя узнать точно сколько именно памяти стека понадобиться.

И на закуску пример переполнения стека на Дельфи:

Procedure TForm1.Button1onclick(Sender:TObject);
begin
 caption:='что-нибудь чтобы оптимизатор не удалил весь этот код';
 Button1onclick(Sender);
end;




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Kesh
  Дата 15.8.2002, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken




Попробую доходчиво объяснить...
У тебя на кухне есть вентиляция... Может быть ты и не задумывался, но она идеально подходит для хранения всяких пиратских дисков и прочего барахла, которое нужно спрятать от посторонних глаз...
Дальше...
Представим, что к тебе ломятся менты, которые чудом узнали о твоей причастности к краху торгового центра в Америке, наводнению в Европе, шторме в Новороссийске, распространению детской порнографии и т.д.
Надо заметать следы...
Ты хватаешь компакты с порнухой и запихиваешь их в вентиляцию... Потом хватаешь планы торгового центра и полетные карты американских пилотов и запихиваешь их туда же...
Под конец ты заваливаешь вентиляционную дырку своими старыми нестиранными носками (Типа чтобы ментовская овчарка не нашла)...
Уставший и гордый за свою находчивость ты идешь открывать дверь...
А на пороге вместо ментов стоит твой друган Серега... с прискорбной миной и просьбой дать порнуху посмотреть...
Твои действия: извлечь из вентиляции носки, потом карты и планы, потом достать диски и отдать их Сереге...
На вопрос о том, что это за хрень с вентиляцией, ты теперь можешь смело заявить что проверял на практике работу со стеком...


Special thanks to: ][akep.ru


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
MuToGeN
Дата 15.8.2002, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва




Цитата(kesh @ 15.8.2002, 02:03)
Попробую доходчиво объяснить...
У тебя на кухне есть вентиляция... Может быть ты и не задумывался, но она идеально подходит для хранения всяких пиратских дисков и прочего барахла, которое нужно спрятать от посторонних глаз...
Дальше...
Представим, что к тебе ломятся менты, которые чудом узнали о твоей причастности к краху торгового центра в Америке, наводнению в Европе, шторме в Новороссийске, распространению детской порнографии и т.д.
Надо заметать следы...
Ты хватаешь компакты с порнухой и запихиваешь их в вентиляцию... Потом хватаешь планы торгового центра и полетные карты американских пилотов и запихиваешь их туда же...
Под конец ты заваливаешь вентиляционную дырку своими старыми нестиранными носками (Типа чтобы ментовская овчарка не нашла)...
Уставший и гордый за свою находчивость ты идешь открывать дверь...
А на пороге вместо ментов стоит твой друган Серега... с прискорбной миной и просьбой дать порнуху посмотреть...
Твои действия: извлечь из вентиляции носки, потом карты и планы, потом достать диски и отдать их Сереге...
На вопрос о том, что это за хрень с вентиляцией, ты теперь можешь смело заявить что проверял на практике работу со стеком...


Special thanks to: ][akep.ru

СУПЕР объяснение... раньше такого не слышал :D


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
FdX
Дата 16.8.2002, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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




Мне тоже понравилось. Круто.

А если короче, то это область памяти для хранения данных.
"Вентиляция" эта растет вниз (к младшим адресам).
Если не ошибаюсь, принцип работы называется "Last In First Out" или
тоже самое, тока наоборот. Тоесть, положил туда сначала
переменную n1, потом n2. Пока не возьмешь n2, n1 взять не можешь
(вообщето можешь, но по-умному).

Цитата

У стека есть еще одно основополагающее свойство - заранее, на этапе разработки, никак нельзя узнать точно сколько именно памяти стека понадобиться.


Может, я не совсем понял, но помойму можно. Если писать на асме, можно
ведь просто сосчитать. В на языке высокого уровня, вроде Дельфи и С++,
помойму тоже можно но очень сложно.
PM MAIL ICQ   Вверх
Vit
Дата 16.8.2002, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago




Цитата(FdX @ 15.8.2002, 16:35)
Может, я не совсем понял, но помойму можно. Если писать на асме, можно
ведь просто сосчитать.

Нельзя! НАпример ты вызываешь функцию рекурсивно - например проходишь все каталоги файловой системы, откуда ты можешь заранее знать сколько раз функция будет вызвана из самой себя и запихнута в стек. И нет никакой разницы в языке программирования. Вот пример, конечно он глупый, но на этапе разработки оценить размер понадобившегося стека можно только приблизительно, и с очень малой долей вероятности может понадобиться сколь угодно большой стек.

Код

Procedure MyFunction;
begin
 if Random(100)>1 then MyFunction;
end;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Blade
  Дата 29.8.2002, 04:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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




Первый ответ kesh'у, который я хотел написать: "Ты случайно не являешься редактором журнала хакер?" После этого прочёл преписку special th... Всё равно классно :))
PM MAIL   Вверх
Baa
Дата 29.8.2002, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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




стек - область памяти, функционирующая по принципу LIFO, выделяемая программе для временного хранения адресов возврата при вызовах функций и процедур, передаваемых параметров и локальных переменных


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Kesh
  Дата 30.8.2002, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken




Всем огромное спасибо за отзывы...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


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

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


 




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


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

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