![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 07.06.2008
Сообщений: 6
|
![]()
Имеются 3 функции:
Код:
Понятно что int a=... определяет на стеке переменную int. А что происходит при выполнении a++ и return с точки зрения стека? (может ещё что-то пропустил) Помогите разобраться |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
По одному машинному слову на переменную int (4 байта на 32-х разрядной машине, 2 байта на 16-ти разрядной), 4 байта на переменную float, 8 байт на переменную double и 4 - на переменную long плюс место для параметров вызываемых функций - random() принимает int, что такое print() Вы не уточняете. оператор ++ над элементарными типами (данный случай) со стеком не связан. Он же, когда является операторным методом класса будет "расходовать" стэк согласно своей реализации. Вложенные вызовы функций добавляют к "расходу" вызывающей функции плюс затраты на передачу адреса возврата, его размер зависит от модели памяти. return "отматывает" стэк назад - "убирает" из стэка все локальные переменные и адрес возврата, после чего передаёт управление по этому адресу.
--------------------- Забыл сразу добавить, что такое поведение операции return характерно для stdcall-функций. Для cdecl "отматываться" будет только адрес возврата и локальные переменные, а ответственность за "освобождение" параметров лежит на вызывающей функции. Последний раз редактировалось B_N; 30.06.2008 в 13:17. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 07.06.2008
Сообщений: 6
|
![]()
Благодарю.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |
вопрос по сокетам и общение как в ICQ.Сложный вопрос... | Руслантус | Общие вопросы C/C++ | 2 | 12.08.2008 21:10 |
TObject *Sender | sergei64_89 | Общие вопросы C/C++ | 1 | 06.06.2008 13:36 |
Вопрос по стеку на C++ | Go6a | Помощь студентам | 2 | 06.04.2008 22:07 |