К сожалению, переместив объекты и не обновив указатели, которые на них ссылались, мы создали путаницу. Почему же мы не обновили указатели, перемещая объекты? Мы могли бы написать такую программу, только зная детали структуры данных.
В принципе система (т.е. система динамической поддержки языка С++) не знает, где хранятся указатели; иначе говоря, если у нас есть объект,
то вопрос: “Какие указатели ссылаются на данный объект в данный момент?” не имеет ответа.
Также вам может показаться, что такая тема как http://kolodec.msk.ru/kolodets/ никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт kolodec.msk.ru
Тема колодец цена там представлена весьма широко. На том сайте можно узнать много интересного на тему колодец цена
Что означает вообще тема колодец цена, где найти тему колодец цена - про это написано на сайте kolodec.msk.ru
Это очень важная для многих людей тема - колодец цена Спасибо сайту kolodec.msk.ru за информацию на тему колодец цена
Но даже если бы эту проблему можно было легко решить, такой подход (известный как уплотняющая сборка мусора (compacting garbage collection)) не всегда оправдывает себя. Например, для того чтобы он хорошо работал, обычно требуется, чтобы свободной памяти было в два раза больше, чем памяти, необходимой системе для отслеживания указателей и перемещения объектов. Этой избыточной памяти во встроенной системе может не оказаться. Кроме того, от эффективного механизма уплотняющей сборки мусора трудно добиться предсказуемости.
Можно, конечно, ответить на вопрос “Где находятся указатели?” для наших структур данных и уплотнить их, но проще вообще избежать фрагментации в начале блока. В данном примере мы могли бы просто разместить оба объекта класса Node до размещения объектов класса Message.
while( . . . ) {
Node* n1 = new Node;
Node* n2 = new Node;
Message* p = get_input(dev);
// . . . храним информацию в узлах . . .
delete p;
// . . .
}
Однако перестройка кода для предотвращения фрагментации в общем случае не такая простая задача. Решить ее надежно очень трудно. Часто это приводит к противоречиям с другими правилами создания хороших программ. Вследствие этого мы предпочитаем ограничивать использование свободной памяти только методами, позволяющими избежать фрагментации в начале блока. Часто предотвратить проблему проще, чем ее решить.
Выполните программу, приведенную выше, и выведите на печать адреса и размеры созданных объектов, чтобы увидеть, как возникают “дыры” в памяти и возникают ли они вообще. Если у вас есть время, можете нарисовать схему памяти, подобную показанным выше, чтобы лучше представить себе, как происходит фрагментация.
Опубликовал katy
April 25 2015 09:55:48 ·
1 Комментариев ·
3437 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Oleg27 October 23 2023 12:09:04
Да прям! Я вот знаю несколько человек, которые живут именно на такие доходы. А тем более сейчас во время карантина самый хороший и безопасный способ заработка - ставки. Только надо выбрать надежную букмекерскую контору, вот эту хвалят https://1xbetvip.site/cryptocurrency/ наверно тоже попробую займусь подзаработаю
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.