Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csOpRsInr 153 of 163 menu
◀ ▶

Введение в управляемую память в C#

Объект класса в C# обычно создают через new, а в переменной хранят ссылку на этот объект, а не копию самих данных.

Память под такие объекты выделяет управляемая куча. Программист не возвращает каждый блок этой памяти системе вручную, как при работе с кучей в C++. Сборщик мусора находит объекты, до которых больше нельзя добраться из работающего кода, и освобождает занятое ими место.

Так снижается риск забыть освободить память в одной из веток if или перед ранним return: пока на объект есть путь по ссылкам, он остается в куче.

У объектов есть и другая сторона. Кроме байтов в управляемой куче они могут удерживать внешние ресурсы - открытые файлы, сетевые соединения, дескрипторы операционной системы. Сборщик освобождает память объекта-обертки, но не гарантирует, что связанный ресурс закроется в тот момент, когда программа уже закончила с ним работу. Поэтому управление памятью и управление такими ресурсами в C# - две разные задачи.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить