Yönetilen Kod
Yönetilen kod, Visual Basic .NET ve C # derleyicilerinin oluşturduğu şeydir. Çöp toplama, çalışma zamanı türü denetimi ve referans denetimi gibi hizmetler sunan CLR (Ortak Dil Çalışma Zamanı) üzerinde çalışır. Bunu düşünün, " Kodum CLR tarafından yönetiliyor ."
Visual Basic ve C # yalnızca yönetilen kod üretebilir, bu nedenle, bu dillerden birinde bir uygulama yazıyorsanız, CLR tarafından yönetilen bir uygulama yazıyorsunuzdur. Visual C ++ .NET'te bir uygulama yazıyorsanız, isterseniz yönetilen kod üretebilirsiniz, ancak isteğe bağlıdır.
Yönetilmeyen Kod
Yönetilmeyen kod doğrudan makine kodunu derler. Yani, bu tanım gereği geleneksel C / C ++ derleyicileri tarafından derlenen tüm kodlar 'yönetilmeyen kod'dur. Ayrıca, bir ara dili değil, makine kodunu derlediğinden taşınabilir değildir.
Ücretsiz bellek yönetimi veya CLR'nin sağladığı başka bir şey yok.
Visual Basic veya C # ile yönetilmeyen kod oluşturamadığından, Visual Studio'da yönetilmeyen tüm kodlar C / C ++ ile yazılır.
İkisini karıştırma
Visual C ++ yönetilen veya yönetilmeyen koda derlenebilir çünkü ikisi aynı uygulamada karıştırmak mümkündür. Bu, ikisi arasındaki çizgiyi bulanıklaştırır ve tanımı karmaşıklaştırır, ancak örneğin kötü yazılmış bir yönetilmeyen kodla bir üçüncü taraf kütüphanesi kullanıyorsanız, bellek sızıntılarına sahip olabileceğinizi bilmeniz gerekir.
İşte googling ile bulduğum bir örnek :
#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;
}