Kode yang Dikelola
Kode yang dikelola adalah apa yang dibuat oleh kompiler Visual Basic .NET dan C #. Ini berjalan pada CLR (Common Language Runtime), yang, antara lain, menawarkan layanan seperti pengumpulan sampah, pemeriksaan jenis waktu proses, dan pemeriksaan referensi. Jadi, anggap saja sebagai, "Kode saya dikelola oleh CLR."
Visual Basic dan C # hanya dapat menghasilkan kode yang dikelola, jadi, jika Anda menulis aplikasi dalam salah satu bahasa tersebut, Anda menulis aplikasi yang dikelola oleh CLR. Jika Anda menulis aplikasi dalam Visual C ++ .NET Anda dapat menghasilkan kode terkelola jika Anda suka, tetapi itu opsional.
Kode Tidak Terkelola
Kode yang tidak dikelola mengkompilasi langsung ke kode mesin. Jadi, dengan definisi itu semua kode yang dikompilasi oleh kompiler C / C ++ tradisional adalah 'kode tidak terkelola'. Juga, karena ia mengkompilasi ke kode mesin dan bukan bahasa perantara, ia tidak portabel.
Tidak ada manajemen memori bebas atau apapun yang disediakan CLR.
Karena Anda tidak dapat membuat kode tidak terkelola dengan Visual Basic atau C #, di Visual Studio semua kode tidak terkelola ditulis dalam C / C ++.
Mencampur keduanya
Karena Visual C ++ dapat dikompilasi ke kode yang dikelola atau tidak, dimungkinkan untuk menggabungkan keduanya dalam aplikasi yang sama. Ini mengaburkan garis antara keduanya dan memperumit definisi, tetapi perlu disebutkan hanya agar Anda tahu bahwa Anda masih dapat mengalami kebocoran memori jika, misalnya, Anda menggunakan pustaka pihak ketiga dengan beberapa kode tidak terkelola yang ditulis dengan buruk.
Berikut contoh yang saya temukan dengan 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;
}