Другие языки программирования и технологии

Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.

Я понимаю абстрактность в том что: Стек - это чтобы получить доступ к последнему - надо пройти через всех, кто до последнего. А куча - это чтобы дойти до последнего - программист просто указывает адрес последнего (через указатель) , и не надо"трогать" другие ячейки.

Почему в с++ создают указатель используя new и delete (в си maloc free\ в паскале new dispose) для выделения\освобождения памяти?

Куча - это получение доступа к нужной области памяти (работа с указателями) или же это выделение\освобождение специального места в ОЗУ раз используют new\delete, особенно запутало то, что размер стека - 64 кб (4 мб) , а остальная память ОЗУ - это куча?
Стек и куча (абстрактные) - это специально организованные области памяти. Берешь память - например, массив - и организовываешь (пишешь процедуры для работы с ней) , вот тебе стек и куча. Но каждой программе, запущенной на компьютере, система выделяет свои специальные стек и кучу - отсюда и путаница между "стеком вообще" (абстрактным) и стеком программы (конкретным) . Куча ограничена только возможностями системы, а вот стек приходится выделять сразу, т. к. адреса в стеке идут последовательно, это гарантировано системой, а в куче могут быть какие угодно.

Доступ к элементам стека бывает и прямой, по указателям; но добавить или убрать в стеке можно только последний элемент (а дольше всего удалять первый) . А куча организована так, что туда можно в любой момент что-то добавить или убрать, но где именно выделиться память - не известно.

>Почему в с++ создают указатель используя new и delete (в си maloc free\ в паскале new dispose) для выделения\освобождения памяти?

Вообще бессмысленный вопрос. А почему для обозначения сложения используется знак +? А почему по-русски говорят "здравствуйте", а по-французки "bonjour"? Потому что так принято.
Мега Иманбаев
Мега Иманбаев
83 943
Лучший ответ
не злоупотребляйте словом "обычно"...
Стас Шатский
Стас Шатский
55 767
Куча это область памяти, в которой размещаются объекты, созданные с помощью new, malloc. Стек это тоже область памяти, в стеке обычно хранятся локальные переменные. Стек обычно имеет небольшой размер, из-за того что в нем переменные хранятся не долго. Как только переменная выходит из области видимости, она удаляется из стека.
Азамат Агжанов
Азамат Агжанов
24 293