Выделение оперативной памяти в С++

компьютеры программирование память с++ массив

Где выделяется оперативная память при статическом распределении памяти? при динамическом распределении памяти?
Формулировка вопроса именно такая.

Примечание:
Подчеркиваю: вопрос состоит не в том "как выделяется память", а втом "где в оперативной памяти".
Вот такой уж странный вопрос...

Примечание:
AGUtilities,
при защите лабораторной работы это я говорил. ответ был кратким: "нет".
Ответы:
const int size = 1024;
при статическом  -  на стеке, каждому процессу выделяется фиксированная память под стек
int x[size];
В Си(++) есть три разных способа выделения памяти для объектов:
1. Статическое выделение памяти: пространство для объектов создаётся в области хранения данных кода программы в момент компиляции; время жизни таких объектов совпадает со временем жизни этого кода.
Да, и ещё (для зануд):
1. operator new может быть переопределен и размещать объекты где-нибудь в глобальном хранилище.
2. Если статически/автоматически создается не-POD объект, память для его членов может выделяться в конструкторе в других областях.
Подтверждаю слова Виталия Капустяна. Он абсолютно прав.
Препод будет доволен таким ответом на 100%.
Динамически можно по разному. Например через heapalloс. Но предположим, что имеется ввижу оператор new. Внутри себя (если не переопределен) он вызывает malloc, которая вызывает VirtualAlloc, но делает это очень хитро.
При первом вызове она резервирует регион размером 1 Мб (в будущих версиях Visual C++ эти значения могут измениться) и передает блок памяти, размер которого кратен 64 Кб (если malloc вызван чтобы выделить память размером 64 Кб или менее, выделяется один 64-килобайтный блок. При последующих вызовах память выделяется по возможности из этого блока; в ином случае диспетчер кучи вызывает VirtualAlloc, чтобы передать дополнительную память. После того, как весь регион размером 1 Мб израсходован, malloc резервирует еще один регион размер 2 Мб, потом другой, но уже размером 4 Мб и т.д., передавая память по мере необходимости.
1. Статический режим выделения памяти:
Программе выделяется память под так называемый стек. В нем программа просто выделяет в определенных случаях нужные себе куски памяти подряд сверху вниз. Т.е. сначала скажем программа возьмет себе 4 байта по адресу TOP_OF_STACK - 4. А потом еще 2 по адресу TOP_OF_STACK - 6. И т.д.


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.