Управляемый код (
managed code) это
C# код.
C# код выполняется под управлением
CLR (Common Language Runtime).
Т.е в
C# мы создаем объект вызывая
new, а
CLR (Common Language Runtime) автоматически когда надо удалит объект из памяти.
Неуправляемый код (
unmanaged code) это
C++ код.
В
C++ есть указатели т.е. когда мы создаем объект вызывая
new указатель указывает на этот объект, и потом по указателю мы сами должны удалить объект из памяти вызывая
delete.
В
C++ указатель мы можем поменять на кусочек памяти который не выделяли и если попытаемся удалить то наше C++ приложения закроется системой Windows.
Т.е.
C++ код компилируется в асемблер и выполняется напрямую с системой
Windows.
C# код компилируется в
промежуточный код IL (Intermediate Language) и выполняется внутри
CLR (Common Language Runtime).
CLR (Common Language Runtime) выполняется напрямую с системой
Windows.
CLR (Common Language Runtime) контролирует удаление памяти и там нет указателей поэтому
C# код называется управляемый код
managed code.