Чтобы ответить на этот вопрос, нам нужно знать, с какой операционной системой и архитектурой мы имеем дело. В pmg упоминается Стандарт, а в статьях упоминается «хранение» или «пространство». Это самые общие и единственно допустимые термины, если только мы не сделаем несколько предположений.
Например:
malloc выделяет блок Virtual
Адресное пространство в куче
Это не правильно для многих встроенных систем. Многие из них не используют виртуальную память, потому что в ней нет необходимости (нет многозадачности и т. Д.) Или по соображениям производительности. Более того, возможно, что какое-то экзотическое устройство не имеет идеи кучи - сомнение в том, что будет использоваться malloc, но справедливо, что это одна из причин, почему в стандарте упоминается «хранилище», - это зависит от реализации.
С другой стороны, пример верен для Window и Linux на наших ПК. Давайте проанализируем это, чтобы ответить на вопрос.
Прежде всего, нам нужно определить, что такое виртуальное адресное пространство.
Виртуальное адресное пространство (VAS) - это механизм отображения памяти, который помогает управлять несколькими процессами.
- изолировать процессы - каждый из них имеет
его собственное адресное пространство
- позволяет выделить память под 32-битную
архитектура ограничена.
- предоставляет одну краткую модель памяти
Вернемся к вопросу: «Распределяет ли malloc блок памяти в куче или он должен называться Виртуальным адресным пространством?»
Оба утверждения верны . Я бы лучше сказал VAP вместо памяти - это более явно. Существует распространенный миф о том, что malloc = оперативная память. В старые времена распределение памяти под DOS было очень простым. Всякий раз, когда мы просим памяти, это всегда была RAM, но в современных Oses она может варьироваться.