|
"C with Classes"
|
|
Сборщик мусора01.12.2019, 19:38. Показов 9911. Ответов 54
Метки нет (Все метки)
Наткнулся на такие строки и прошу пояснить, что значит.
Во многих языках управление ресурсами в основном делегируется сбор щику мусора. С++ также предлагает интерфейс сборки мусора, так что вы можете подключить сборщик мусора. In many languages, resource management is primarily delegated to a garbage collector. C++ also offers a garbage collection interface so that you can plug in a garbage collector На чем основывается этот интерфейс? И как его подключить. (это про сторонние библиотеки что ли?)
0
|
|
| 01.12.2019, 19:38 | |
|
Ответы с готовыми решениями:
54
Сборщик мусора задача не для новичков- сборщик мусора
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 01.12.2019, 19:40 | |||
|
а дальше есть текст? может примеры будут.
1
|
|||
|
"C with Classes"
|
||
| 01.12.2019, 19:50 [ТС] | ||
|
Источник:
Язык программирования C++. Краткий курс 2 издание, глава 5.3. Управление ресурсами. Добавлено через 7 минут С++ также предлагает интерфейс это действительно умные указатели, а про подключить сборщик мусора это стороннюю библиотеку.Добавлено через 1 минуту хз надеюсь что кто нибудь лучше толканет.
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 01.12.2019, 19:52 | ||
![]() Добавлено через 34 секунды хотя если есть большое желание можно подтянуть буст и думать что все сделано как сказано в книжке ))
0
|
||
|
"C with Classes"
|
|
| 01.12.2019, 19:54 [ТС] | |
|
Undisputed, вот чуть побольше инфы если зацепило.
Во многих языках управление ресурсами в основном делегируется сбор щику мусора. С++ также предлагает интерфейс сборки мусора, так что вы можете подключить сборщик мусора. Однако лично я считаю сборку мусора последним вариантом - после исчерпания более ясных, более общих и луч ше локализованных альтернатив управления ресурсами. Мой идеал заклю чается в том, чтобы не создавать мусор, тем самым устраняя необходимость в сборщике мусора: не мусори! Сборка мусора фундаментально представляет собой глобальную схему управления памятью. Умные реализации могут компенсировать эту глобаль ность, но по мере того, как системы становятся все более и более распреде ленными (вспомните о кешах, многоядерности и кластерах), локальность ста новится важнее, чем когда-либо ранее. Кроме того, память не является единственным ресурсом. Ресурс - это все, что должно быть захвачено и (явно или неявно) освобождено после ис- пользования. Примерами ресурсов являются память, блокировки, сокеты, дескрипторы файлов и потоков. Нет никакого сюрприза в том, что ресурс, который является не просто памятью, называется ресурсом, не являющимся памятью (non-memory resource). Хорошая система управления ресурсами обрабатывает все разновидности ресурсов. Утечек следует избегать в любой системе, работающей длительное время, но чрезмерное удержание ресурсов может быть почти таким же плохим, как и утечка. Например, если система удерживает память, блокировки, файлы и тому подобное в два раза дольше, чем требуется, - потенциально такой системе требуется вдвое большее коли чество ресурсов. Прежде чем прибегать к сборке мусора, систематически используйте де скрипторы ресурсов: пусть каждый ресурс имеет владельца в некоторой об ласти видимости и по умолчанию освобождается в конце области видимости его владельца. В С++ это называется идиомой RAII (Resource Acquisition ls lnitialization - захват ресурса есть инициализация) и интегрируется с обра боткой ошибок в форме исключений. Ресурсы могут перемещаться из одной области видимости в другую с помощью семантики перемещения или "ин теллектуальных указателей'', а совместное владение может быть представле но "совместно используемым указателем" ( § 13 .2.1 ). В стандартной библиотеке С++ идиома RAll очень распространена для разных видов ресурсов, например для памяти (string, vector, map, unordered _ map и т.д.), файлов (ifstream, ofstream и т.д.), потоков вы полнения (thread), блокировок (lock _guard, unique _ lock и т.д.) и объ ектов общего назначения (через unique _ptr и shared _ptr). Результатом является неявное управление ресурсами, невидимое при обычном использо вании и приводящее к малой продолжительности захвата ресурсов.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 01.12.2019, 20:02 | |
Сообщение было отмечено _stanislav как решение
Решение
3
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||
| 01.12.2019, 20:09 | ||||||
|
DrOffset,
как я понял это предложение заключается в том что бы отслеживать что-то в этом духе
0
|
||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 01.12.2019, 20:12 | ||
|
которую завезли в язык уже как 9ть лет назад почти. см раздел "Garbage collector support"
2
|
||
|
"C with Classes"
|
||||||
| 01.12.2019, 20:30 [ТС] | ||||||
|
Undisputed, как я понимаю если указатель поменял свое значение мусоросборщик память сразу заберет:
а если нужно адресную арифметику юзать то нужно мусоросборщик предупреждать по ходу.
0
|
||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 01.12.2019, 20:32 | |
|
_stanislav,
я вот до конца не понял как это работает" может потом как нибудь еще раз попробую почитать
0
|
|
|
фрилансер
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,070
|
||
| 01.12.2019, 20:40 | ||
|
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 01.12.2019, 20:43 | |
|
Алексей1153,
А как "одеть" указатель?
0
|
|
|
фрилансер
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,070
|
|
| 01.12.2019, 20:45 | |
|
Undisputed,
unique_ptr shared_ptr в посте #8 есть ссылка
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 01.12.2019, 21:25 | |
|
Алексей1153,
Так DrOffset же пояснил что эта тема не про смарт принтеры ![]() Добавлено через 22 минуты _stanislav, Чуточку вроде бы разобрался. Короче по идее если есть поддержка сборщика, то он время от времени запускается (возможно, в отдельном потоке), и "чистит" те адреса которые на его "взгляд" пора чистить. Например, если присвоить указателю nullptr. При этом надо быть осторожным. То есть если ты куда то скопировал этот адрес до присвоения исходной переменной nullptr, то копия этого адреса уже может указывать на просроченный участок. Если таких проблем хочется избежать как я понял надо применять к такому адресу std::declare_reachable. Это кстати и есть часть интерфейса gc (остальные функции интерфейса есть по ссылке выше на ФАГ Страуструпа). Но это все как я понял толком нигде не реализовали и стандарт как бы не настаивает на этом. DrOffset, Поправь плиз если я ошибаюсь Добавлено через 10 минут Алексей1153, А что касается ссылки из 8 поста то hoggy указал подраздел который нужно смотреть. В Этом подразделе явно нет смарт поинтеров
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||
| 01.12.2019, 21:25 | |||||||
0
|
|||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 01.12.2019, 21:40 | |
|
Renji,
Предположение о том что речь о смартпоинтерах было неверным поэтому честно говоря не понял к чему вы клоните
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 01.12.2019, 21:55 | ||
|
0
|
||
|
Неэпический
|
|
| 01.12.2019, 22:42 | |
|
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 01.12.2019, 23:13 | ||
|
0
|
||
|
Неэпический
|
||
| 01.12.2019, 23:15 | ||
|
Но можно прикрутить самостоятельно.
0
|
||
| 01.12.2019, 23:15 | |
|
Помогаю со студенческими работами здесь
20
Очистка мусора Сборка мусора
Уборка мусора из double Как избавиться от записи мусора? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|