2009-04-01 16 views
20

का उपयोग करने के प्रभाव क्या हैं इस तथ्य के अलावा कि कोड स्वयं मेमोरी तक सीधे पहुंच सकता है। "/ Unsafe" कंपाइलर ध्वज और "निश्चित" कीवर्ड का उपयोग करने के अन्य प्रभाव क्या हैं? कोड हस्ताक्षर और मेरे .exe की तैनाती से संबंधित प्रभावों पर कोई दस्तक है (मेरा ऐप केवल डेस्कटॉप है)?असुरक्षित कोड

(यह के बारे में क्या है या नहीं मैं यह कर किया जाना चाहिए नहीं है, क्यों मेरे सवाल here में शामिल है)

उत्तर

6

असुरक्षित कोड नहीं निरीक्षण, ताकि आप उस के बारे में पता होना जरूरी है। एक पूर्ण ट्रस्ट पर्यावरण में, यह एक बड़ा सौदा नहीं है, लेकिन यदि आपके पास अन्य वातावरण हैं जिनके पास अधिक प्रतिबंधित अनुमति सेट है, तो इससे आपको प्रभावित हो सकता है।

12

आप प्रभाव को दो बाल्टी में डाल सकते हैं।

पहला यह है कि यह आपके एप्लिकेशन वातावरण को कैसे प्रभावित करता है। असुरक्षित कोड का उपयोग करने की आवश्यकता है कि आपकी असेंबली पूर्ण ट्रस्ट वातावरण में चलें। प्रतिबंधित वातावरण में चलना संभव नहीं है जैसे कुछ क्लिक सुरक्षा सेटिंग्स के बाद। कारण यह है कि असुरक्षित कोड सीएलआर को प्रकार की सुरक्षा सुनिश्चित करने से रोकता है। एक बार क्लिक करें हालांकि सुरक्षा प्रतिबंधों में कोई समस्या नहीं होनी चाहिए।

दूसरी बात यह है कि आप जिस तरह से कोड करते हैं उसका मतलब है। असुरक्षित कोड का उपयोग करने में आम तौर पर पॉइंटर्स का उपयोग करना शामिल होता है और विशेष रूप से, इन्हें PInvoke के माध्यम से उन्नत मार्शलिंग करने के लिए उपयोग करना शामिल है। हालांकि इनमें से किसी भी कार्रवाई के साथ स्वाभाविक रूप से गलत कुछ भी नहीं है। इसे सीएलआर की काफी समझदारी और "सुरक्षित" कोड की तुलना में मार्शलिंग की आवश्यकता है। ऑब्जेक्ट पिनिंग ज्ञान का एक बड़ा उदाहरण है, इन सुविधाओं का उपयोग शुरू करने से पहले आपको दृढ़ समझदारी की आवश्यकता होगी।

2

pinning आपत्ति उठाने जारेड के संदर्भ में जोड़ने के लिए ...

संकेत का उपयोग करते समय सी # में सीधे स्मृति का उपयोग करने के लिए, आप रनटाइम पर स्मृति में चारों ओर एक वस्तु आगे बढ़ CLR जोखिम रहता है। इसका मतलब है कि आपका पॉइंटर स्मृति के गलत खंड पर अचानक बिंदु हो सकता है। Fixed कीवर्ड वस्तु को स्मृति में पिन करेगा ताकि इस समस्या से बचा जा सके।

संबंधित मुद्दे