15:25

Я не сплю, я перешел в режим замедленного функционирования
Вот так номер. Оказывается, мое изучение C++ пошло во вред моему программированию в .Net.
Я постараюсь объяснить, чтобы было понятно и непрограммистам.
В объектно-ориентированном программировании для работы с объектами требуется их инициализировать (выделить под них память). А когда эти объекты перестают быть нужными, их необходимо уничтожать (освобождать выделенную под них память).
Так вот, в C++ при создании объекта автоматически вызывается специальная подпрограмма - конструктор, а при уничтожении объекта также автоматически вызывается другая специальная подпрограмма - деструктор. Если деструктор не создавать, то часть памяти может не освободиться, что приведет к утечке памяти.
А в .Net работает несколько другая модель. Здесь избавление от объекта не приводит к немедленному запуску деструктора. Вместо этого очисткой памяти занимается специальный процесс - сборщик мусора. И именно он занимается вызовом подпрограммы-деструктора, при этом делает это только при необходимости.
Другими словами, это значит, что деструктор может быть вызван через секунду, через час, или вообще никогда после избавления от объекта.

TL;DR: Хоть C++ и языки .Net имеют сходства, но часть этих сходств у них работает совершенно по-разному.

Ок, цепь записей про игры прервана, можно снова постить про игры... :lol:

@темы: Программирование

Комментарии
15.12.2016 в 15:58

Другими словами, это значит, что деструктор может быть вызван через секунду, через час, или вообще никогда после избавления от объекта.
И это не управляется? Или этот процесс всегда висит в системе?
15.12.2016 в 17:54

Я не сплю, я перешел в режим замедленного функционирования
И это не управляется? Или этот процесс всегда висит в системе?
Сборщик мусора можно заставить сработать, но делать это, как правило, не рекомендуется, так как может замедлить работу приложения.

Как я понимаю, он запускается вместе с приложением как часть окружения. Как вон Java virtual machine, в которой также используется принцип периодической сборки мусора. Если ты когда-нибудь смотрел в майнкрафте меню F3, то мог заметить, что используемая память постоянно растет, и затем с определенными интервалами сбрасывается обратно. Это как раз моменты, когда срабатывает сборщик мусора