|
"C with Classes"
|
|
Сборщик мусора01.12.2019, 19:38. Показов 10327. Ответов 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
Сборщик мусора задача не для новичков- сборщик мусора
|
|
"C with Classes"
|
||
| 02.12.2019, 19:04 [ТС] | ||
|
Garbage collection (automatic recycling of unreferenced regions of memory) is optional in C++; that is, a garbage collector is not a compulsory part of an implementation. However, C++11 provides a definition of what a GC can do if one is used and an ABI (Application Binary Interface) to help control its actions. http://www.stroustrup.com/C++11FAQ.html#gc-abi а вот цитата и его книги, на всякий случай, если первую страницу темы пропустил: Сборщик мусора Добавлено через 59 секунд документально в стандарте не искал, просто лень мне его читать.
0
|
||
|
Комп_Оратор)
|
|||
| 02.12.2019, 19:09 | |||
|
Это понимаешь
А это: То есть, вроде как сформулированы требования, но нет компиляторов которые это делают. Доступных по крайней мере. Можно создать объектный мир типа шарпа или кьюта и тоже обеспечить автоматику... Можно библиотекой реализовать указатели и их инициализацию. Можно, наконец, и компилятор заставить это делать ключами, но куча кода не будет компилироваться без кучи гемора. Последний вариант - это процесс ради процесса как говорил поручик Ржевский. То есть, милое дело, для ценителей.
1
|
|||
|
"C with Classes"
|
|||
| 02.12.2019, 19:26 [ТС] | |||
|
Storage allocated directly with these functions is implicitly declared reachable (see 6.6.4.4.3) on allocation, ceases to be declared reachable on deallocation, and need not cease to be declared reachable as the result of an undeclare_reachable() call. [Note: This allows existing C libraries to remain unaffected by restrictions on pointers that are not safely derived, at the expense of providing far fewer garbage collection and leak detection options for malloc()-allocated objects. It also allows malloc() to be implemented with a separate allocation arena, bypassing the normal declare_reachable() implementation. The above functions should never intentionally be used as a replacement for declare_- reachable(), and newly written code is strongly encouraged to treat memory allocated with these functions as though it were allocated with operator new. — end note] Добавлено через 16 минут
0
|
|||
|
0 / 0 / 0
Регистрация: 17.06.2018
Сообщений: 68
|
|
| 02.12.2019, 19:34 | |
|
Откуда эти строки?
0
|
|
|
"C with Classes"
|
||
| 02.12.2019, 20:06 [ТС] | ||
|
Тебя я то же понял кстати, спасибо. Добавлено через 1 минуту чуть не так выразился и началось ![]() Добавлено через 1 минуту при тебе слово стандартный в контексте C++ вообще нельзя говорить по ходу.
0
|
||
|
Комп_Оратор)
|
|||
| 02.12.2019, 20:12 | |||
|
0
|
|||
|
"C with Classes"
|
|
| 02.12.2019, 20:15 [ТС] | |
|
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
|
| 13.12.2022, 17:19 | |
|
Немного общих размышлений. Зачем вообще прибегают к ручному управлению памятью (new/delete)? Чаще всего чтобы просто выделить её из кучи (а не из стека). Потому что стек маленький. При этом оборачивают голый поинтер в смарт, чтобы он вёл себя как объект с локальной областью видимости (и авто продолжительностью жизни). Так почему же не добавить в язык способ выделения объектов сразу в куче, с автоматической продолжительностью жизни?
Причём многие стандартные классы и контейнеры (тот же vector например) уже имеют такое поведение и проблем с ними вроде особо и нет. Если где-то ошибаюсь, поправьте.
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 13.12.2022, 17:27 | |
|
Geek Geekson, динамичекий объект с временем жизни, ограниченным локальным скоупом - это очень частный случай, гораздо чаще нужно передавать куда-то владение. Т.е. условный
scoped_ptr (то, о чем говорите вы) и тот же unique_ptr - это разные вещи, и последний нужен гораздо чаще.С++ вообще в основе своей многое переложил на библиотеки, by design, так сказать. Поэтому чего удивляться, если частная утилитарная задача не решается в core language, т.к. успешно решается библиотечным кодом. Так же не стоит забывать, что само по себе понятие "куча" очень размыто, потому что язык позволяет перегружать операторы new\delete.
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
||
| 13.12.2022, 17:48 | ||
|
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 13.12.2022, 18:13 | |||
|
Мы же говорим про объекты в С++ программе. Точнее вы говорите: Geek Geekson, С++ не регламентирует как будет устроена куча и как будет устроен стек. И правила в нем не привязаны никак к тому, каким образом это реализует ОС (если она вообще есть), и каким образом это будет реализовывать runtime С++. Вместо этого используется понятие storage duration; вот от него и надо отталкиваться в обсуждениях, которые затрагивают сам язык. Так что выше вы фактически предложили вот что: "пусть объекты с dynamic storage duration будут иметь встроенный в язык механизм контролирующий их время жизни в пределах заданного scope". Сама по себе идея так их контролировать в принципе неплоха и прекрасно реализуется библиотечными средствами (это уже сказал).
0
|
|||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
||
| 13.12.2022, 18:13 | ||
|
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 13.12.2022, 18:36 | ||
|
Так вот, из-за этого всякие решения о предоставлении по вашему запросу памяти принимает именно этот менеджер памяти внутри рантайма, а не ОС напрямую. Т.к. рантайм С++ - при работе программы находится в том же адресном пространстве, что и весь остальной код, то с этой точки зрения абсолютно параллельно каким именно образом будет выделяться память в операторе new (главное, чтобы соблюдались базовые контракты): способом по умолчанию, который предоставляет runtime C++, вашим собственным способом (который даже может в принципе задействовать функции ОС напрямую) или вообще используя свою собственную адресацию с хранением данных в файле вместо памяти (за примером в boost::interprocess). Именно поэтому С++ никакого конкретного понятия "куча" не вводит.
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 13.12.2022, 18:37 | |||
|
0
|
|||
| 13.12.2022, 18:37 | |
|
Очистка мусора Сборка мусора
Уборка мусора из double Как избавиться от записи мусора? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|
|
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли
Введение: Экологический рынок как игра с нулевой суммой
Традиционная экология долгое время. . .
|
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ
Введение: Синдром «цифрового учебника»
Современные большие языковые модели (LLM) обладают колоссальным. . .
|
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос.
Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех.
А широколиственный лес тоже имеет самую крутую биомассу.
То почему не возникло их симбиоза? Это. . .
|
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне.
Это уже новая модель, модель сукцессии грибной.
потоки фосфора, азота. Углерода.
5 видов организмов.
Я даже. . .
|