Куча и стек
Автор хелпните задал вопрос в разделе Другие языки и технологии
Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался. и получил лучший ответ
Ответ от Капитан Гугл[гуру]
Стек и куча (абстрактные) - это специально организованные области памяти. Берешь память - например, массив - и организовываешь (пишешь процедуры для работы с ней) , вот тебе стек и куча. Но каждой программе, запущенной на компьютере, система выделяет свои специальные стек и кучу - отсюда и путаница между "стеком вообще" (абстрактным) и стеком программы (конкретным) . Куча ограничена только возможностями системы, а вот стек приходится выделять сразу, т. к. адреса в стеке идут последовательно, это гарантировано системой, а в куче могут быть какие угодно.Доступ к элементам стека бывает и прямой, по указателям; но добавить или убрать в стеке можно только последний элемент (а дольше всего удалять первый) . А куча организована так, что туда можно в любой момент что-то добавить или убрать, но где именно выделиться память - не известно.>Почему в с++ создают указатель используя new и delete (в си maloc free в паскале new dispose) для выделенияосвобождения памяти?Вообще бессмысленный вопрос. А почему для обозначения сложения используется знак +? А почему по-русски говорят "здравствуйте", а по-французки "bonjour"? Потому что так принято.
не злоупотребляйте словом "обычно"...
Куча это область памяти, в которой размещаются объекты, созданные с помощью new, malloc. Стек это тоже область памяти, в стеке обычно хранятся локальные переменные. Стек обычно имеет небольшой размер, из-за того что в нем переменные хранятся не долго. Как только переменная выходит из области видимости, она удаляется из стека.