จัดการรหัส
รหัสที่ได้รับการจัดการคือสิ่งที่ 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;
}