मैं बस काम पर ढेर से बाहर भाग गया, यह एक डेटाबेस था और यह कुछ धागे चला रहा था, मूल रूप से पिछले डेवलपर ने ढेर पर एक बड़ी सरणी फेंक दी थी, और ढेर वैसे भी कम था। सॉफ़्टवेयर को माइक्रोसॉफ्ट विजुअल स्टूडियो 2015 का उपयोग करके संकलित किया गया था।
भले ही थ्रेड स्टैक से बाहर हो गया हो, फिर भी यह चुपचाप असफल रहा और जारी रहा, यह केवल स्टैक पर डेटा की सामग्री तक पहुंचने के लिए ढेर हो गया।
सबसे अच्छी सलाह जो मैं दे सकता हूं वह है कि ढेर पर सरणी घोषित न करें - खासकर जटिल अनुप्रयोगों और विशेष रूप से धागे में, इसके बजाय ढेर का उपयोग करें। यही वह है जो इसके लिए है;)
यह भी ध्यान रखें कि स्टैक घोषित करते समय तुरंत विफल नहीं हो सकता है, लेकिन केवल पहुंच पर। मेरा अनुमान है कि संकलक खिड़कियों के नीचे "आशावादी रूप से" स्टैक घोषित करता है, यानी यह मान लेगा कि ढेर घोषित कर दिया गया है और इसका उपयोग करने के लिए पर्याप्त रूप से आकार दिया गया है और फिर पता चला है कि ढेर वहां नहीं है।
विभिन्न ऑपरेटिंग सिस्टम में अलग-अलग स्टैक घोषणा नीतियां हो सकती हैं। यदि आप जानते हैं कि ये नीतियां क्या हैं, तो कृपया एक टिप्पणी छोड़ दें।
आप जानते हैं कि आप बिना किसी घुसपैठ के गहराई से पहली खोज को कार्यान्वित कर सकते हैं, है ना? – Sebastian
नहीं, मुझे नहीं पता, कृपया समझाएं। – avd
मैंने वास्तविक उत्तर स्टैक ओवरफ़्लो –