असुरक्षित रस्ट आपको स्मृति पर अधिक नियंत्रण देता है। असुरक्षित जंग के साथ काम करना सीखें और इसके उपयोग से जुड़े अंतर्निहित जोखिमों को समझें।

मेमोरी सुरक्षा गारंटी रस्ट के विक्रय बिंदुओं में से एक है; हालाँकि, जंग बग और कमजोरियों के प्रति प्रतिरक्षित नहीं है। जैसा कि रस्ट का उधार चेकर स्वामित्व मॉडल को लागू करता है, सुरक्षा जांच के दौरान संकलन समय में थोड़ा सा व्यापार-बंद होता है।

जंग "असुरक्षित जंग" नामक सुविधा में सुरक्षा जांच को बायपास करने के लिए कार्यक्षमता प्रदान करता है जो आपको प्रदर्शन उद्देश्यों के लिए इन सुरक्षा जांचों से बचने की अनुमति देता है। असुरक्षित रस्ट रस्ट के साथ कुशल, निम्न-स्तरीय सिस्टम सॉफ़्टवेयर लिखने का एक शक्तिशाली उपकरण है।

असुरक्षित जंग को समझना

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

असुरक्षित रस्ट का उद्देश्य डेवलपर्स को प्रदर्शन का त्याग किए बिना निम्न-स्तरीय सिस्टम कोड लिखने की क्षमता प्रदान करना है। आप मेमोरी संसाधनों को सीधे एक्सेस और मैनिपुलेट कर सकते हैं और असुरक्षित रस्ट के साथ अपने एप्लिकेशन के प्रदर्शन को बढ़ा सकते हैं।

असुरक्षित रस्ट विशेष रूप से ऑपरेटिंग सिस्टम डेवलपमेंट, नेटवर्क प्रोग्रामिंग और गेम डेवलपमेंट में उपयोगी है, जहां प्रदर्शन महत्वपूर्ण है। इन संदर्भों में, आपको प्रोग्राम के मेमोरी लेआउट और कोड व्यवहार पर सूक्ष्म नियंत्रण की आवश्यकता होगी। असुरक्षित जंग आपको जटिल एल्गोरिदम और डेटा संरचनाओं को लागू करने के लिए निम्न-स्तरीय अमूर्तता प्रदान करके इसे प्राप्त करने की अनुमति देता है।

असुरक्षित जंग के साथ काम करना

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

मूल्य संशोधन के लिए स्मृति तक सीधी पहुंच के लिए आप असुरक्षित ब्लॉक का उपयोग कैसे कर सकते हैं:

fnमुख्य() {
होने देनामुठ एक्स = 10;

असुरक्षित {
होने देना कच्चा = औरमुठ एक्स जैसा *मुठi32;
*कच्चा = 20;
}

प्रिंटल!("एक्स अब {}" है, एक्स);
}

एक्स चर एक परिवर्तनशील पूर्णांक है। में असुरक्षित ब्लॉक, कच्चे सूचक को एक्स को एक नया मान प्रदान करता है एक्स. कोड में असुरक्षित ब्लॉक वैध है लेकिन सुरक्षित नहीं है, और असुरक्षित ब्लॉक में नहीं था; प्रोग्राम क्रैश हो जाता है।

इसके अतिरिक्त, आप असुरक्षित कार्यों को जोड़कर परिभाषित कर सकते हैं असुरक्षित कीवर्ड से पहले fn आपके फ़ंक्शन घोषणाओं में कीवर्ड।

असुरक्षितfnPerform_unsafe_operation() {
// यहां आपका असुरक्षित कोड है
}

आपको अपने प्रोग्राम के अन्य भागों में असुरक्षित कार्यों को कॉल करने के लिए एक असुरक्षित ब्लॉक की आवश्यकता होगी।

fnमुख्य() {
असुरक्षित {
Perform_unsafe_operation ();
}
}

के साथ कार्यों को चिह्नित करना असुरक्षित कीवर्ड का मतलब यह नहीं है कि फ़ंक्शन स्वाभाविक रूप से खतरनाक है। यह इंगित करता है कि फ़ंक्शन में कोड है जिसके उपयोग में अतिरिक्त सावधानी की आवश्यकता होती है।

असुरक्षित जंग के उपयोग से जुड़े जोखिम

असुरक्षित रस्ट के अनुचित उपयोग से स्मृति त्रुटियां, डेटा रेस और अन्य सुरक्षा भेद्यताएं हो सकती हैं। इसलिए, सुरक्षित और प्रदर्शनकारी कोड लिखने के लिए असुरक्षित जंग से जुड़े सर्वोत्तम अभ्यासों का पालन करते हुए जोखिमों को समझना महत्वपूर्ण है।

असुरक्षित रस्ट से जुड़ा मुख्य जोखिम मेमोरी से संबंधित बग की संभावना है जो क्रैश, सुरक्षा भेद्यता और अपरिभाषित कोड व्यवहार का कारण बन सकता है।

मेमोरी त्रुटियां तब होती हैं जब कोई प्रोग्राम मेमोरी को असामान्य रूप से एक्सेस करने का प्रयास करता है; कार्यक्रम अंतत: दुर्घटनाग्रस्त हो जाता है या अप्रत्याशित रूप से व्यवहार करता है।

डेटा रेस तब होती है जब दो या दो से अधिक प्रोग्राम थ्रेड मेमोरी के एक ही टुकड़े को एक साथ एक्सेस करते हैं, और पर कम से कम एक धागा स्मृति में मूल्य को संशोधित कर रहा है, जिससे प्रोग्राम व्यवहार कर रहा है अप्रत्याशित रूप से।

आप असुरक्षित रस्ट का अनुचित तरीके से उपयोग करके बफर ओवरफ्लो को ट्रिगर कर सकते हैं। बफर ओवरफ्लो तब होता है जब कोई प्रोग्राम बफर के अंत से परे डेटा लिखता है। बफ़र ओवरफ्लो प्रोग्राम को क्रैश कर सकता है या हमलावरों को मनमाना कोड निष्पादित करने की अनुमति दे सकता है।

एक अन्य भेद्यता उपयोग-बाद-मुक्त (UAF) है जो तब होती है जब कोई प्रोग्राम मान डी-आवंटन के बाद मेमोरी तक पहुँचता है। यूएएफ कार्यक्रम को अप्रत्याशित रूप से व्यवहार करने और संभावित रूप से सुरक्षा भेद्यता पेश करने का कारण बन सकता है।

इन कमजोरियों के कारण, असुरक्षित जंग के साथ काम करते समय गहराई से काम करना आवश्यक है रस्ट के स्वामित्व को समझें और रस्ट में उधार लेने वाला मॉडल कैसे काम करता है सर्वोत्तम प्रथाओं का पालन करते हुए।

रस्ट का मेमोरी प्रबंधन लचीला है

रस्ट का स्वामित्व मॉडल मेमोरी को स्वचालित रूप से प्रबंधित करता है, मेमोरी से संबंधित बग के जोखिम को कम करता है। उधार लेने से कई चर एक साथ एक ही मेमोरी संसाधनों को बिना किसी विवाद के एक्सेस कर सकते हैं।

रस्ट का मेमोरी प्रबंधन आधुनिक सॉफ्टवेयर विकास के लिए आवश्यक लचीलापन, सुरक्षा और प्रदर्शन प्रदान करता है, जिससे रस्ट कुशल और विश्वसनीय कोड लिखने के लिए एक शक्तिशाली उपकरण बन जाता है।