Возможно, это глупый вопрос. Читая книгу Рихтера CLR via C#, в главе 14 наткнулся на неуправляемую память. Ну так вот, чем отличается управляемая и неуправляемая память?
Программа в .NET имеет свой менеджер памяти, который занимается автоматическим выделением памяти под объекты и очисткой памяти после объектов (сборка мусора).
Это значит что программист не заботится о выделении памяти и ее очистке.
Такой тип памяти называется управляемой памятью. И все объекты, которые вы создаете в .NET располагаются в управляемой памяти. Это все встроенные типы: int, string, double, Array, List<> и т.п. Все они - управляемые объекты и располагаются в управляемой памяти.
Однако, программа работает не только с управляемыми объектами. Часть объектов связана с операционной и файловой системами, с WinAPI, с драйверами, с видеокартой, с сетью и т.д. Понятно, что все эти внешние ресурсы никак не связаны с менеджером памяти .NET и потому на них не распространяется автоматическое распределение памяти. Такая память и такие объекты называются неуправляемыми.
Рихтер, вроде, все подробно объясняет.
Управляемая память находится под контролем CLR и при необходимости(когда в стеке закончилось место под объекты) вызывается сборщик мусора, который удаляет объекты на которых нету корневых ссылок, выполняет дефрагментацию.
Неуправляемая память же целиком в руках программист и он хозяин процесса выделения/освобождения памяти.
Скорее подразумевается неуправляемая и управляемая модели памяти. Управляемая отличается от первой тем, что там с объектами работает GC, который память очищает, дефрагментирует, поддерживает актуальность ссылок на лету. Расположение объекта в памяти в каждый момент времени не детерменированно. Ее состояние управляется извне.
В неуправляемой модели ничего такого нет - память выделяется и очищается по требованию самой программы.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости