Керований код
Керований код - це те, що створюють компілятори Visual Basic .NET і C #. Він працює на CLR (Common Language Runtime), який, крім усього іншого, пропонує такі послуги, як збирання сміття, перевірка типу виконання та перевірка довідок. Отже, подумайте про це як "Мій код керується CLR".
Visual Basic та C # можуть створювати лише керований код, тому, якщо ви пишете заявку на одній із цих мов, ви пишете програму, керовану CLR. Якщо ви пишете заявку в Visual C ++ .NET, ви можете створити керований код, якщо вам подобається, але це необов'язково.
Некерований код
Некерований код збирається безпосередньо до машинного коду. Отже, за цим визначенням весь код, зібраний традиційними компіляторами C / C ++, є "некерованим кодом". Крім того, оскільки він компілює машинний код, а не проміжну мову, він не є портативним.
Немає безкоштовного управління пам’яттю чи будь-чого іншого, що надається CLR.
Оскільки ви не можете створити некерований код за допомогою Visual Basic або C #, у Visual Studio весь некерований код записується на C / C ++.
Змішування двох
Оскільки Visual C ++ може бути скомпільований як керованим, так і некерованим кодом, їх можна змішати в одній програмі. Це розмиває межу між двома і ускладнює визначення, але варто згадати лише те, що ви знаєте, що ви все ще можете мати витоки пам’яті, якщо, наприклад, ви використовуєте сторонні бібліотеки з погано написаним некерованим кодом.
Ось приклад, який я знайшов googling :
#using <mscorlib.dll>
using namespace System;
#include "stdio.h"
void ManagedFunction()
{
printf("Hello, I'm managed in this section\n");
}
#pragma unmanaged
UnmanagedFunction()
{
printf("Hello, I am unmanaged through the wonder of IJW!\n");
ManagedFunction();
}
#pragma managed
int main()
{
UnmanagedFunction();
return 0;
}