डिबग मोड के लिए std::वेक्टर ऑपरेटर[] में बाउंड चेकिंग लागू करना
C में, std::vector क्लास स्वचालित सीमा प्रदान करता है इसकी at() विधि से जाँच करना। हालाँकि, ऑपरेटर[] विधि अनियंत्रित सरणी पहुंच की अनुमति देती है, जिससे संभावित रूप से अपरिभाषित व्यवहार होता है। डेवलपर्स अक्सर रिलीज मोड में प्रदर्शन से समझौता किए बिना डिबग मोड में ऑपरेटर [] के लिए सीमा जांच को सक्षम करने का एक तरीका ढूंढते हैं।
इस समस्या को हल करने के लिए, विजुअल स्टूडियो 2005 और 2008 दोनों डिबग में मूल रूप से ऑपरेटर [] के लिए सीमा जांच को लागू करते हैं। और रिलीज़ बिल्ड। यह मैक्रो _SECURE_SCL द्वारा नियंत्रित होता है, जिसे सीमा जांच को अक्षम करने और अनियंत्रित व्यवहार पर वापस लौटने के लिए 0 पर सेट किया जा सकता है। रिलीज़ इसे डिबग मोड में बनाए रखते हुए बनाता है। एक नया मैक्रो, _ITERATOR_DEBUG_LEVEL, इस कार्यक्षमता को नियंत्रित करने के लिए _SECURE_SCL की जगह लेगा।
इस दृष्टिकोण को अपनाकर, डेवलपर्स यह सुनिश्चित कर सकते हैं कि std::vector तत्वों तक आउट-ऑफ-रेंज पहुंच डिबग में std::out_of_range अपवाद को ट्रिगर करती है। मोड, रिलीज़ बिल्ड में कुशल प्रदर्शन बनाए रखते हुए मूल्यवान त्रुटि का पता लगाना प्रदान करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3