Я понимаю абстрактность в том что: Стек - это чтобы получить доступ к последнему - надо пройти через всех, кто до последнего. А куча - это чтобы дойти до последнего - программист просто указывает адрес последнего (через указатель) , и не надо"трогать" другие ячейки.
Почему в с++ создают указатель используя new и delete (в си maloc free\ в паскале new dispose) для выделения\освобождения памяти?
Куча - это получение доступа к нужной области памяти (работа с указателями) или же это выделение\освобождение специального места в ОЗУ раз используют new\delete, особенно запутало то, что размер стека - 64 кб (4 мб) , а остальная память ОЗУ - это куча?
Другие языки программирования и технологии
Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.
Стек и куча (абстрактные) - это специально организованные области памяти. Берешь память - например, массив - и организовываешь (пишешь процедуры для работы с ней) , вот тебе стек и куча. Но каждой программе, запущенной на компьютере, система выделяет свои специальные стек и кучу - отсюда и путаница между "стеком вообще" (абстрактным) и стеком программы (конкретным) . Куча ограничена только возможностями системы, а вот стек приходится выделять сразу, т. к. адреса в стеке идут последовательно, это гарантировано системой, а в куче могут быть какие угодно.
Доступ к элементам стека бывает и прямой, по указателям; но добавить или убрать в стеке можно только последний элемент (а дольше всего удалять первый) . А куча организована так, что туда можно в любой момент что-то добавить или убрать, но где именно выделиться память - не известно.
>Почему в с++ создают указатель используя new и delete (в си maloc free\ в паскале new dispose) для выделения\освобождения памяти?
Вообще бессмысленный вопрос. А почему для обозначения сложения используется знак +? А почему по-русски говорят "здравствуйте", а по-французки "bonjour"? Потому что так принято.
Доступ к элементам стека бывает и прямой, по указателям; но добавить или убрать в стеке можно только последний элемент (а дольше всего удалять первый) . А куча организована так, что туда можно в любой момент что-то добавить или убрать, но где именно выделиться память - не известно.
>Почему в с++ создают указатель используя new и delete (в си maloc free\ в паскале new dispose) для выделения\освобождения памяти?
Вообще бессмысленный вопрос. А почему для обозначения сложения используется знак +? А почему по-русски говорят "здравствуйте", а по-французки "bonjour"? Потому что так принято.
не злоупотребляйте словом "обычно"...
Куча это область памяти, в которой размещаются объекты, созданные с помощью new, malloc. Стек это тоже область памяти, в стеке обычно хранятся локальные переменные. Стек обычно имеет небольшой размер, из-за того что в нем переменные хранятся не долго. Как только переменная выходит из области видимости, она удаляется из стека.
Похожие вопросы
- Вопрос о стеке и куче
- Подскажите пожалуйста, какой есть нормальный видеоредактор?А то Windows Movie Maker очень сильно портит качество видео
- Что делать, если карта памяти на телефоне очень сильно тупит ???
- Вопрос по созданию сайта! Очень сильно надо!
- А правда, что Касперский очень сильно тормозит систему из-за своей функциональности?
- при сохранении фото в формате jpg оно очень сильно теряет в качестве (+)
- Пожалуйста, помогите перевести файл pdf в файл word, очень сильно нужно
- Помогите написать программу пожалуйста. Буду очень сильно благодарен =)
- Люди скиньте пожаалуйста КОД! Очень сильно прошу! Язык программирования с++ ПАМАГИТИ если не сложно) Просто скиньте код)
- Можно ли сказать, что стек - временный участок памяти, в котором данные хранятся по принципу LIFO(last in first out)?