] यह सवाल उठाता है कि क्या इसी तरह का व्यवहार गो में होता है और क्या इस तरह के बिंदुओं को वापस करने के लिए सुरक्षित है।
में, व्यवहार आश्चर्यजनक रूप से अलग है। संकलक निम्न उदाहरण की तरह स्टैक-आवंटित बिंदुओं को वापस करने के लिए कोई त्रुटि उत्पन्न नहीं करता है:
पैकेज मुख्य आयात ( "एफएमटी" ) func मुख्य () { fmt.println (*(कुछ ())) } func कुछ () *स्ट्रिंग { s: = "a" वापसी और एस } c के विपरीत, GO में यह कोड पूरी तरह से मान्य है और किसी भी रनटाइम त्रुटियों का उत्पादन नहीं करेगा। इसका कारण यह है कि गो एक परिष्कृत तकनीक को नियुक्त करता है जिसे एस्केप एनालिसिस के रूप में जाना जाता है। यदि मूल्य या सूचक बचने के लिए पाया जाता है, तो संकलक इसे स्टैक के बजाय कचरे-एकत्रित ढेर पर रखता है। इस मामले में, लौटा हुआ पॉइंटर *कुछ () फ़ंक्शन के दायरे से बच जाता है और इसलिए उसे ढेर पर रखा जाता है। यह रणनीति मैनुअल मेमोरी मैनेजमेंट की आवश्यकता को समाप्त कर देती है और यह सुनिश्चित करती है कि फ़ंक्शन रिटर्न के बाद नुकीला डेटा सुलभ रहता है। यह विकल्प हीप और स्टैक आवंटन के बारे में किए गए निर्णयों में अंतर्दृष्टि प्रदान करेगा।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3