Ограничение рекурсивного высвобождения памяти контейнеров #72
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Добавить возможность очистки ресурсов, обеспечивающих существование контейнера, без очистки данных вложенных контейнеров.
Добавить возможность отказа от очистки ресурсов вложенных контейнеров при обновлении узла контейнера новым значением
Контейнер, из списка поставляемых в решении, -- абстрактная сущность не владеющая, а каталогизирующая объекты (информацию о них), за исключением vtype_array.
Ограничение рекурсивного высвобождения памяти контейнеров, лежит в области описания хранимых типов. Таким образом, уничтожаемый объект может быть не очищен, если используется где-то еще, контейнер лишь гарантирует вызов метода, который МОЖЕТ высвободить ресурсы.
При очищении vtype_array ресурсы ДОЛЖНЫ быть очищены, однако, если область памяти, принадлежащая данному типу, используются где-то еще, -- есть вероятность возникновения утечек памяти.
Ответственность за контроль использования памяти, принадлежащей vtype_array лежит в области ответственности программиста, таким же образом, как и при использовании областей памяти статических массивов/стека.
Соответственно, очистка ресурсов обновляемых узлов контейнеров, -- также лежит в области описания типа, а не контейнера.
(см #77)