Имеет ли куча фиксированный размер, такой как стек в памяти, и что происходит, если оба - PullRequest
0 голосов
/ 27 января 2019

Как концептуально заявлено, stack растет и heap растет, есть ли смысл для того, чтобы и то, и другое сходилось? Если да, то происходит ли stack overflow, когда стек растет и пересекает его пределы.не может войти в heap section?

Heap также растет вверх, поэтому его размер также зафиксирован, я надеюсь.но ни где не упоминается, сколько выделено на кучу.Но когда я попробовал на своем компьютере, все адреса стеков и кучи памяти идут вверх.

Я не совсем понял концептуально.Пожалуйста, помогите

1 Ответ

0 голосов
/ 27 января 2019

Стек растет соответственно платформе.Подробнее см. в этом вопросе .

Помимо направления увеличения стека, когда вам необходимо увеличить размер стека, диспетчеры памяти запрашивают непрерывный блок виртуальной памяти в направлении егодолжен расти, если этот запрос может быть удовлетворен, ваш стек увеличивается, в противном случае запрос завершается неудачей.

Ошибка обрабатывается по-разному, в зависимости от архитектуры оборудования, операционной системы и конфигураций.Например, стандартное приложение пользовательского режима в Windows обычно дает сбой из-за того, что «недостаточно памяти для выполнения операции», но ошибка может варьироваться в зависимости от возможности повреждения.

Каждому потоку назначается диапазон смежных виртуальных адресовпо началу.Это значение определяется по порядку компилятором, который может быть переопределен вами и, наконец, переопределен операционной системой.Вы можете разбить процесс, просто запустив достаточное количество потоков без выполнения номера (кроме исчерпания дескриптора, которое здесь неактуально).

...