Форум программистов, компьютерный форум CyberForum.ru

Где хранятся аргументы, передаваемые в функцию - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 19:59     Где хранятся аргументы, передаваемые в функцию #1
собственно - сабж...
интересует вопрос, где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию? и где можно почитать про всякие указатели на функцию, указатели на метод класса и т.д. в общем так называемые "АЗЫ"?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2012, 19:59     Где хранятся аргументы, передаваемые в функцию
Посмотрите здесь:

C++ Опишите функцию extern в Си, её аргументы, назначение и что возвращае
Аргументы, передаваемые в main C++
). Где в Visual Studio хранятся откомпилированы файлы. Какое расширение у файлов на языке СИ. Структура программы на СИ C++
Аргументы по-умолчанию в указателе на функцию в классе C++
Указатели на передаваемые двумерные массивы в функцию C++
C++ Типы передаваемые в функцию
C++ Прочитать информацию из файла и рассортировать как структуру, где хранятся данные про каждую книгу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.04.2012, 20:08     Где хранятся аргументы, передаваемые в функцию #2
Цитата Сообщение от l_a_m Посмотреть сообщение
где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию?
стек/регистры
Цитата Сообщение от l_a_m Посмотреть сообщение
и где можно почитать про всякие указатели на функцию, указатели на метод класса
да хоть у нас на форуме - непонятная конструкция, шаблоны
ну и
Литература C++
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2012, 20:10     Где хранятся аргументы, передаваемые в функцию #3
l_a_m, там, где это предусмотрено соглашением о вызовах. Обычно стек, регистры, или стек + регистры.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
20.04.2012, 20:13     Где хранятся аргументы, передаваемые в функцию #4
Цитата Сообщение от l_a_m Посмотреть сообщение
где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию?
Либо в стеке, либо на регистрах, либо и там и там. Всё зависит от программных соглашений. На каждой архитектуре это сделано по разному

Реализация __stdcall, __cdecl
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 20:19  [ТС]     Где хранятся аргументы, передаваемые в функцию #5
благодарю, нутром чуял что в стеке, но с ходу у гугла не смог этого выяснить...

Добавлено через 1 минуту
ну и ещё интересует, организация стековой памяти и организация кучи, сегодня меня с лёгкостью загнали в тупик академическими задачками )
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
20.04.2012, 20:20     Где хранятся аргументы, передаваемые в функцию #6
Цитата Сообщение от l_a_m Посмотреть сообщение
ну и ещё интересует, организация стековой памяти и организация кучи
Это лучше в книгах читай. Там сложного ничего нет, но объяснять долго
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 20:24  [ТС]     Где хранятся аргументы, передаваемые в функцию #7
да мне это когда-то в институте читали, и сам в книжках читал, но уже нефига не помню ) сейчас погуглю на тему Страуструпа, там думаю точно есть такие мелочи...
Байт
 Аватар для Байт
14357 / 9188 / 1325
Регистрация: 24.12.2010
Сообщений: 16,837
20.04.2012, 20:45     Где хранятся аргументы, передаваемые в функцию #8
Цитата Сообщение от l_a_m Посмотреть сообщение
ну и ещё интересует, организация стековой памяти и организация кучи, сегодня меня с лёгкостью загнали в тупик академическими задачками
Ну, стек - это стопка тетрадей, причем работать (читать-писать) можно только с верхней. Вызвал функцию - новая тетрадка сверху, вышел - тетрадка сжигается.
Куча - сказал new (или malloc) - тебе выделяется память и дается ее адрес (указатель). Эта память никем использоваться не может, пока ты ее не освободил delete (или free). Организация кучи на порядок посложнее организации стека. Нужно еще учет свободной памяти вести, а она кусочная получается. Простейшую кучу можно сделать так. В свободной памяти выделяется кусок длины N+4
Первые 4 байта - длина куска, затем N байтов памяти. При освобождении все эти N+4 байта возвращаются в список свободных кусков. Вот организация этого списка и есть самое интересное в реализации кучи.
Ну, все это так, на пальцах, на самом деле алгоритмы ведения кучи могут быть совершенно разные
Цитата Сообщение от Evg Посмотреть сообщение
Это лучше в книгах читай.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 22:05  [ТС]     Где хранятся аргументы, передаваемые в функцию #9
Цитата Сообщение от Байт Посмотреть сообщение
Ну, стек - это стопка тетрадей, причем работать (читать-писать) можно только с верхней. Вызвал функцию - новая тетрадка сверху, вышел - тетрадка сжигается.
Куча - сказал new (или malloc) - тебе выделяется память и дается ее адрес (указатель). Эта память никем использоваться не может, пока ты ее не освободил delete (или free).
благодарю, я как бе знаю что это такое, но не знаю принципов, точнее не так... реализации работы памяти\регистров, собственно это и хочу для себя подчерпнуть, скорее это наверное больше вопрос не с точки зрения программирования, а с точки зрения комп. схемотехники или комп. арифметики или ещё хз чего )
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
20.04.2012, 22:13     Где хранятся аргументы, передаваемые в функцию #10
Ну операционка тебе всё равно не даст к реальной памяти доступа.программа работает в какой-то своей области ОЗУ. Ты можешь параллельно запустить вторую такую же программу, если под Windows например, Вторая программа запустится, начнёт записывать точно такие же переменные в стек и кучу,
причём по тем же самым адресам.
но окажутся они в двух разных областях реальной памяти, предоставленным Осью.
но со схемотехникой это никак не будет связано.
Всю память предоставляет операционка.
...вроде бы
Байт
 Аватар для Байт
14357 / 9188 / 1325
Регистрация: 24.12.2010
Сообщений: 16,837
20.04.2012, 22:36     Где хранятся аргументы, передаваемые в функцию #11
Цитата Сообщение от l_a_m Посмотреть сообщение
благодарю, я как бе знаю что это такое,
Прошу прощения, если мой пост оказался для вас общим местом. Ну вот, был вопрос, вызвал пару ассоциаций, я не стал себе отказывать в удовольствии их изложить. Я же не знаю вашего уровня. Надеюсь, что никто не обижен
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 23:02  [ТС]     Где хранятся аргументы, передаваемые в функцию #12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
но со схемотехникой это никак не будет связано.
Всю память предоставляет операционка.
да ну разве? операционка естественно принимает участие в распределении памяти, но ИМХО можно и запросить непосредственно конкретную область в памяти и тебе ОС должна таки будет выделить именно ту область памяти, которую ты запрашиваешь... физическая адресация то всё равно одна и та же, не смотря на ОС, тут уже больше архитектура важна ИМХО.

Добавлено через 1 минуту
Цитата Сообщение от Байт Посмотреть сообщение
Прошу прощения, если мой пост оказался для вас общим местом. Ну вот, был вопрос, вызвал пару ассоциаций, я не стал себе отказывать в удовольствии их изложить. Я же не знаю вашего уровня. Надеюсь, что никто не обижен
да всё нормально, сам частенько люблю по глумиться над не очень адекватными вопросами
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
20.04.2012, 23:21     Где хранятся аргументы, передаваемые в функцию #13
Цитата Сообщение от l_a_m Посмотреть сообщение
да ну разве? операционка естественно принимает участие в распределении памяти, но ИМХО можно и запросить непосредственно конкретную область в памяти и тебе ОС должна таки будет выделить именно ту область памяти, которую ты запрашиваешь... физическая адресация то всё равно одна и та же, не смотря на ОС, тут уже больше архитектура важна ИМХО.
Ну и как ты в Windows, скажем запросишь обнулить первый мегабайт в оперативке?? Или обнулишь память соседнего процесса или системных процессов операционки???
Ну напиши мне такую программку на Си.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
20.04.2012, 23:29     Где хранятся аргументы, передаваемые в функцию #14
Вы не сможете выделить "нужную" Вам память в ОС. ОС выделяет каждому приложению свое уникальное адресное пространство, которое для 32-битных приложений составляет максимум 4 гб и естественно имеет виртуальный диапазон для приложения от 0x00000000 до 0xFFFFFFFF.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.04.2012, 23:33     Где хранятся аргументы, передаваемые в функцию #15
Цитата Сообщение от l_a_m Посмотреть сообщение
да ну разве? операционка естественно принимает участие в распределении памяти, но ИМХО можно и запросить непосредственно конкретную область в памяти и тебе ОС должна таки будет выделить именно ту область памяти, которую ты запрашиваешь... физическая адресация то всё равно одна и та же, не смотря на ОС, тут уже больше архитектура важна ИМХО.
программы давным давно уже работают с виртуальной памятью
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
20.04.2012, 23:36     Где хранятся аргументы, передаваемые в функцию #16
Цитата Сообщение от Toshkarik Посмотреть сообщение
Вы не сможете выделить "нужную" Вам память в ОС. ОС выделяет каждому приложению свое уникальное адресное пространство, которое для 32-битных приложений составляет максимум 4 гб и естественно имеет виртуальный диапазон для приложения от 0x00000000 до 0xFFFFFFFF.
Именно, можно параллельно запустить две совершенно одинаковые программы, попросить их вывести адреса своих переменных, и они выведут одинаковые числа хотя выполняются программы независимо друг от друга.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 23:42  [ТС]     Где хранятся аргументы, передаваемые в функцию #17
Цитата Сообщение от Jupiter Посмотреть сообщение
непонятная конструкция, шаблоны
благодарю... хороший рассказ, я не знал, что в методы класса не явно передается указатель this, я если честно думал, что он какой-то magic и берётся из потолка)))

Добавлено через 1 минуту
эм... т.е. ассемблер к примеру не спасёт отца советской демократии О_о?
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ну и как ты в Windows, скажем запросишь обнулить первый мегабайт в оперативке?? Или обнулишь память соседнего процесса или системных процессов операционки???
Добавлено через 2 минуты
Цитата Сообщение от alex_x_x Посмотреть сообщение
программы давным давно уже работают с виртуальной памятью
в принципе я знал это, но искренне до сиго момента тешил себя мыслью, что программист всё же может получить область в памяти, как же тогда работают всякого рода эксплойты и т.п. дыры в коде? О_о
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
20.04.2012, 23:43     Где хранятся аргументы, передаваемые в функцию #18
Цитата Сообщение от l_a_m Посмотреть сообщение
что в методы класса не явно передается указатель this
После компиляции VS2008 падает после удаления узла дерева, имеющего потомка
После компиляции VS2008 падает после удаления узла дерева, имеющего потомка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 23:55     Где хранятся аргументы, передаваемые в функцию
Еще ссылки по теме:

Где хранятся правила перехода STANDARD/DST time? C++
Конверсия указателя из double в int, пропускает передаваемые переменные в функцию C++
Написать функцию, проверяющую передаваемые параметры и генерирующую в случае надобности подходящее исключение C++
А как передавать аргументы и где их определять в функцию main() ? C++
Где хранятся данные? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1919 / 1031 / 72
Регистрация: 29.03.2010
Сообщений: 3,166
20.04.2012, 23:55  [ТС]     Где хранятся аргументы, передаваемые в функцию #19
мдя... чувствую пора искать книгу дракона и вперёд, к недосягаемым разуму вершинам бытия))))
Yandex
Объявления
20.04.2012, 23:55     Где хранятся аргументы, передаваемые в функцию
Ответ Создать тему
Опции темы

Текущее время: 21:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru