|
"C with Classes"
|
|
Сборщик мусора01.12.2019, 19:38. Показов 9870. Ответов 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
|
|
|
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
|
|
| 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
|
|
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,055
|
||
| 01.12.2019, 20:40 | ||
|
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 01.12.2019, 20:43 | |
|
Алексей1153,
А как "одеть" указатель?
0
|
|
|
фрилансер
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,055
|
|
| 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): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|