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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
#1

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

20.04.2012, 19:59. Просмотров 1378. Ответов 18
Метки нет (Все метки)

собственно - сабж...
интересует вопрос, где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию? и где можно почитать про всякие указатели на функцию, указатели на метод класса и т.д. в общем так называемые "АЗЫ"?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2012, 19:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где хранятся аргументы, передаваемые в функцию (C++):

Аргументы, передаваемые в main - C++
Всем доброго утра. Вот такой вопрос возник. Запуская программу в консоли имеем вид >cpp1.exe -b -s -f=10 test.txt text_output.rez ...

А как передавать аргументы и где их определять в функцию main() ? - C++
До сих пор, функция main() была без параметров, а тут пример: int main(int argc, char*argv) {} Без каких-либо подробных...

Типы передаваемые в функцию - C++
вобщем, написал программу, она малость топорная, но, беда, я понимаю что я не те значения передаю функциям, но догадаться не могу как...

Указатели на передаваемые двумерные массивы в функцию - C++
Доброго времени суток) Вчера озадачился новым. В недавнем времени перешел на vs 2013 и тут при написании ф-ии решил передать в нее массив...

Конверсия указателя из double в int, пропускает передаваемые переменные в функцию - C++
Здрасти, такая проблема код : #include <iostream> #include <sstream> #include <cstring> using namespace std; void...

Написать функцию, проверяющую передаваемые параметры и генерирующую в случае надобности подходящее исключение - C++
Функция, реализуемая в задании, обязана выполнять проверку передаваемых параметров и генерировать подходящее исключение в случае ошибочных....

18
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.04.2012, 20:08 #2
Цитата Сообщение от l_a_m Посмотреть сообщение
где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию?
стек/регистры
Цитата Сообщение от l_a_m Посмотреть сообщение
и где можно почитать про всякие указатели на функцию, указатели на метод класса
да хоть у нас на форуме - непонятная конструкция, шаблоны
ну и
Литература C++
2
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.04.2012, 20:10 #3
l_a_m, там, где это предусмотрено соглашением о вызовах. Обычно стек, регистры, или стек + регистры.
1
Evg
Эксперт CАвтор FAQ
17936 / 6164 / 409
Регистрация: 30.03.2009
Сообщений: 16,925
Записей в блоге: 27
20.04.2012, 20:13 #4
Цитата Сообщение от l_a_m Посмотреть сообщение
где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию?
Либо в стеке, либо на регистрах, либо и там и там. Всё зависит от программных соглашений. На каждой архитектуре это сделано по разному

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

Добавлено через 1 минуту
ну и ещё интересует, организация стековой памяти и организация кучи, сегодня меня с лёгкостью загнали в тупик академическими задачками )
0
Evg
Эксперт CАвтор FAQ
17936 / 6164 / 409
Регистрация: 30.03.2009
Сообщений: 16,925
Записей в блоге: 27
20.04.2012, 20:20 #6
Цитата Сообщение от l_a_m Посмотреть сообщение
ну и ещё интересует, организация стековой памяти и организация кучи
Это лучше в книгах читай. Там сложного ничего нет, но объяснять долго
1
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
20.04.2012, 20:24  [ТС] #7
да мне это когда-то в институте читали, и сам в книжках читал, но уже нефига не помню ) сейчас погуглю на тему Страуструпа, там думаю точно есть такие мелочи...
0
Байт
Эксперт C
16141 / 10419 / 1551
Регистрация: 24.12.2010
Сообщений: 19,723
20.04.2012, 20:45 #8
Цитата Сообщение от l_a_m Посмотреть сообщение
ну и ещё интересует, организация стековой памяти и организация кучи, сегодня меня с лёгкостью загнали в тупик академическими задачками
Ну, стек - это стопка тетрадей, причем работать (читать-писать) можно только с верхней. Вызвал функцию - новая тетрадка сверху, вышел - тетрадка сжигается.
Куча - сказал new (или malloc) - тебе выделяется память и дается ее адрес (указатель). Эта память никем использоваться не может, пока ты ее не освободил delete (или free). Организация кучи на порядок посложнее организации стека. Нужно еще учет свободной памяти вести, а она кусочная получается. Простейшую кучу можно сделать так. В свободной памяти выделяется кусок длины N+4
Первые 4 байта - длина куска, затем N байтов памяти. При освобождении все эти N+4 байта возвращаются в список свободных кусков. Вот организация этого списка и есть самое интересное в реализации кучи.
Ну, все это так, на пальцах, на самом деле алгоритмы ведения кучи могут быть совершенно разные
Цитата Сообщение от Evg Посмотреть сообщение
Это лучше в книгах читай.
1
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
20.04.2012, 22:05  [ТС] #9
Цитата Сообщение от Байт Посмотреть сообщение
Ну, стек - это стопка тетрадей, причем работать (читать-писать) можно только с верхней. Вызвал функцию - новая тетрадка сверху, вышел - тетрадка сжигается.
Куча - сказал new (или malloc) - тебе выделяется память и дается ее адрес (указатель). Эта память никем использоваться не может, пока ты ее не освободил delete (или free).
благодарю, я как бе знаю что это такое, но не знаю принципов, точнее не так... реализации работы памяти\регистров, собственно это и хочу для себя подчерпнуть, скорее это наверное больше вопрос не с точки зрения программирования, а с точки зрения комп. схемотехники или комп. арифметики или ещё хз чего )
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
20.04.2012, 22:13 #10
Ну операционка тебе всё равно не даст к реальной памяти доступа.программа работает в какой-то своей области ОЗУ. Ты можешь параллельно запустить вторую такую же программу, если под Windows например, Вторая программа запустится, начнёт записывать точно такие же переменные в стек и кучу,
причём по тем же самым адресам.
но окажутся они в двух разных областях реальной памяти, предоставленным Осью.
но со схемотехникой это никак не будет связано.
Всю память предоставляет операционка.
...вроде бы
0
Байт
Эксперт C
16141 / 10419 / 1551
Регистрация: 24.12.2010
Сообщений: 19,723
20.04.2012, 22:36 #11
Цитата Сообщение от l_a_m Посмотреть сообщение
благодарю, я как бе знаю что это такое,
Прошу прощения, если мой пост оказался для вас общим местом. Ну вот, был вопрос, вызвал пару ассоциаций, я не стал себе отказывать в удовольствии их изложить. Я же не знаю вашего уровня. Надеюсь, что никто не обижен
0
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
20.04.2012, 23:02  [ТС] #12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
но со схемотехникой это никак не будет связано.
Всю память предоставляет операционка.
да ну разве? операционка естественно принимает участие в распределении памяти, но ИМХО можно и запросить непосредственно конкретную область в памяти и тебе ОС должна таки будет выделить именно ту область памяти, которую ты запрашиваешь... физическая адресация то всё равно одна и та же, не смотря на ОС, тут уже больше архитектура важна ИМХО.

Добавлено через 1 минуту
Цитата Сообщение от Байт Посмотреть сообщение
Прошу прощения, если мой пост оказался для вас общим местом. Ну вот, был вопрос, вызвал пару ассоциаций, я не стал себе отказывать в удовольствии их изложить. Я же не знаю вашего уровня. Надеюсь, что никто не обижен
да всё нормально, сам частенько люблю по глумиться над не очень адекватными вопросами
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
20.04.2012, 23:21 #13
Цитата Сообщение от l_a_m Посмотреть сообщение
да ну разве? операционка естественно принимает участие в распределении памяти, но ИМХО можно и запросить непосредственно конкретную область в памяти и тебе ОС должна таки будет выделить именно ту область памяти, которую ты запрашиваешь... физическая адресация то всё равно одна и та же, не смотря на ОС, тут уже больше архитектура важна ИМХО.
Ну и как ты в Windows, скажем запросишь обнулить первый мегабайт в оперативке?? Или обнулишь память соседнего процесса или системных процессов операционки???
Ну напиши мне такую программку на Си.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
20.04.2012, 23:29 #14
Вы не сможете выделить "нужную" Вам память в ОС. ОС выделяет каждому приложению свое уникальное адресное пространство, которое для 32-битных приложений составляет максимум 4 гб и естественно имеет виртуальный диапазон для приложения от 0x00000000 до 0xFFFFFFFF.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
20.04.2012, 23:33 #15
Цитата Сообщение от l_a_m Посмотреть сообщение
да ну разве? операционка естественно принимает участие в распределении памяти, но ИМХО можно и запросить непосредственно конкретную область в памяти и тебе ОС должна таки будет выделить именно ту область памяти, которую ты запрашиваешь... физическая адресация то всё равно одна и та же, не смотря на ОС, тут уже больше архитектура важна ИМХО.
программы давным давно уже работают с виртуальной памятью
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 23:33
Привет! Вот еще темы с ответами:

Где хранятся данные? - C++
#include <iostream> #include <string> using namespace std; // Дана информация о пяти комнатах в общежитии. Запись имеет вид:...

Нужно найти папку где хранятся cookie - C++
мне нужно получить путь к папке где храняться куки есть ли такая функция?? в IE куки хранятся в папке Cookies, ее найти не сложно а в...

Передать аргументы в функцию - C++
На самом деле проект у меня куда побольше чем приведу в примере, но мне сейчас основная задача как использоваь функции из разных файлов...

Где хранятся правила перехода STANDARD/DST time? - C++
Вроде бы начиная с 1970 года эти locale-dependent правила хранятся имеено в файле локали, но в какой секции? Насколько я знаю, ...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
20.04.2012, 23:33
Ответ Создать тему
Опции темы

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