|
ООП. Классы и динамические объекты, Подробности управления «кучей» |
|
|
|
 |
Ответов
|
Aug 30 2016, 05:12
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Спасибо за разъяснения. Пока еще не все понятно, но мнение мое по этому вопросу складывается такое. Память под «кучу» упорядочивается и представляется, как бы в виде большой кассеты с группами коробочек разных величин. При создании объекта, ему выделяется нужная по размеру коробочка, а если они закончились, то большая из ближайшей группы. Если коробочек уже не хватает, то на основе статистики о требуемых размерах памяти создают следующую кассету. Для кассеты ведется текущий реестр учета свободных и занятых коробок, по которому и выделяется указатель на свободную память. То есть, кучи, и тем более «мало-кучи» в нашем понимании, как токовой нет, а все как бы строго упорядочено и физическая память под один динамический объект все же непрерывна, а не размазана с разрывами по её разным областям. Поправьте, если понял не так…
|
|
|
|
|
Aug 30 2016, 05:27
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Serhiy_UA @ Aug 30 2016, 08:12)  Память под «кучу» упорядочивается и представляется, как бы в виде большой кассеты с группами коробочек разных величин. Это всего лишь одна из очень многих стратегий. На начальном этапе вы можете об этом не задумываться. Вы просто можете пока считать, что есть некая "куча" из которой вам выделят непрерывный кусок запрошенного вами размера. Или не выделят, если непрерывного куска запрошенного размера в данный момент в куче нет. QUOTE (Serhiy_UA @ Aug 30 2016, 08:12)  и физическая память под один динамический объект все же непрерывна, а не размазана с разрывами по её разным областям Это вам сказали в самом первом ответе. Как же может быть иначе? Система же не знает, что вы там хотите разместить. Но вы можете некоторые данные своего объекта хранить отдельно, в дополнительно запрашиваемой памяти. Запрашивать ее можно в конструкторе, а освобождать - в деструкторе.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 30 2016, 10:16
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Сергей Борщ @ Aug 30 2016, 11:27)  Это вам сказали в самом первом ответе. Как же может быть иначе? Система же не знает, что вы там хотите разместить. Но вы можете некоторые данные своего объекта хранить отдельно, в дополнительно запрашиваемой памяти. Запрашивать ее можно в конструкторе, а освобождать - в деструкторе. В общем случае - это не так. Никто не мешает системе, в распоряжении которой есть MMU, сделать маппирование одного сплошного диапазона логических адресов (блока памяти выделяемого пользовательскому ПО) на несколько несмежных диапазонов физических адресов. А вот делает-ли такое какая-то конкретная ОС или нет - не знаю. Цитата(Сергей Борщ @ Aug 30 2016, 16:14)  Зависит от реализации. Вменяемому менеджеру памяти ничего не мешает объединить освободившийся участок с соседними свободными. Вменяемый может даже несмежные физические блоки объединить. Воспользовавшись услугами MMU.
|
|
|
|
Сообщений в этой теме
Serhiy_UA ООП. Классы и динамические объекты, Подробности управления «кучей» Aug 17 2016, 10:59 CrimsonPig Цитата(Serhiy_UA @ Aug 17 2016, 11:59) 4.... Aug 17 2016, 11:33 AlexandrY Цитата(CrimsonPig @ Aug 17 2016, 14:33) Ч... Aug 17 2016, 12:06  SasaVitebsk Цитата(AlexandrY @ Aug 17 2016, 15:06) Во... Oct 3 2016, 17:18     jcxz Цитата(AlexandrY @ Aug 30 2016, 16:51) Ду... Aug 30 2016, 11:08      AlexandrY Цитата(jcxz @ Aug 30 2016, 14:08) Не гово... Aug 30 2016, 11:31  AlexandrY Цитата(Serhiy_UA @ Aug 30 2016, 08:12) Па... Aug 30 2016, 05:56   Serhiy_UA Команд new/delete мне в работе хватает без вопросо... Aug 30 2016, 08:03    AlexandrY Цитата(Serhiy_UA @ Aug 30 2016, 11:03) А ... Aug 30 2016, 09:22    Сергей Борщ QUOTE (Serhiy_UA @ Aug 30 2016, 11:03) А ... Aug 30 2016, 10:14 brag На мой взгляд, самая подходящая для embedded - это... Oct 4 2016, 17:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|