प्रबंधित कोड
प्रबंधित कोड वह है जो Visual Basic .NET और C # कंपाइलर बनाता है। यह सीएलआर (सामान्य भाषा रनटाइम) पर चलता है, जो अन्य चीजों के अलावा, कचरा संग्रह, रन-टाइम प्रकार की जाँच और संदर्भ जाँच जैसी सेवाएं प्रदान करता है। तो, इसे ऐसे समझें, "मेरा कोड CLR द्वारा प्रबंधित है।"
विजुअल बेसिक और C # केवल प्रबंधित कोड का उत्पादन कर सकते हैं , इसलिए, यदि आप उन भाषाओं में से एक में एप्लिकेशन लिख रहे हैं, जो आप CLR द्वारा प्रबंधित एप्लिकेशन लिख रहे हैं। यदि आप Visual C ++ .NET में एक एप्लीकेशन लिख रहे हैं तो आप चाहें तो प्रबंधित कोड का उत्पादन कर सकते हैं, लेकिन यह वैकल्पिक है।
अनवांटेड कोड
मानवरहित कोड सीधे मशीन कोड के लिए संकलित करता है। तो, उस परिभाषा के अनुसार पारंपरिक C / C ++ संकलक द्वारा संकलित सभी कोड 'मानवरहित कोड' है। इसके अलावा, चूंकि यह मशीन कोड को संकलित करता है और मध्यवर्ती भाषा नहीं है, इसलिए यह गैर-पोर्टेबल है।
कोई मुफ्त मेमोरी प्रबंधन या कुछ और सीएलआर प्रदान नहीं करता है।
चूँकि आप Visual Basic या C # के साथ अनवांटेड कोड नहीं बना सकते हैं, Visual Studio में सभी unmanaged कोड C / C ++ में लिखे गए हैं।
दोनों को मिलाते हुए
चूंकि दृश्य C ++ को प्रबंधित या अप्रबंधित कोड के लिए संकलित किया जा सकता है, इसलिए दोनों को एक ही एप्लिकेशन में मिलाना संभव है। यह दोनों के बीच की रेखा को धुंधला करता है और परिभाषा को जटिल करता है, लेकिन यह ध्यान देने योग्य है कि आप जानते हैं कि आप अभी भी मेमोरी लीक कर सकते हैं यदि, उदाहरण के लिए, आप किसी बुरी तरह से लिखे गए बिना कोड वाले तीसरे पक्ष के पुस्तकालय का उपयोग कर रहे हैं।
यहाँ एक उदाहरण है जिसे मैंने गुग्लिंग द्वारा पाया है :
#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;
}