2012-03-07 20 views
5

पर ठीक से काम करता है यह सिर्फ "सुनिश्चित करने के लिए" प्रश्न है। क्या .NET 4 में x64 सिस्टम के लिए रिकर्सन/लूप पर कोई ज्ञात विशेष सीमाएं/बग हैं?एक्स 64 सिस्टम पर फेंक दिया गया StackOverflowException; x86

मेरा मामला बहुत आसान है - एक प्रोग्राम किसी भी x86 सिस्टम पर ठीक चलता है लेकिन यह x64 सिस्टम पर स्टैक ओवरव्लो एक्सेप्शन के साथ दुर्घटनाग्रस्त हो जाता है (कार्यक्रम में कुछ एक्सएमएल/मैपिंग कोड शामिल होते हैं जिनमें कई स्थानों और रिकॉर्ड्स शामिल होते हैं)।

वर्तमान में इस समस्या का एकमात्र समाधान मेरी असेंबली पर corflags /32BIT+ पर कॉल करना है (और प्रोग्राम सही ढंग से चलना शुरू होता है)। लेकिन मैं सोच रहा था - क्या कोई विशेष मामला है जो x64 पर बग/मुद्दों का कारण बनता है?

धन्यवाद।

उत्तर

9

पॉइंटर्स को x64 (वास्तव में, वास्तव में) में प्रतिनिधित्व करने के लिए अधिक स्मृति की आवश्यकता होती है। इस प्रकार, आप बहुत अधिक मेमोरी का उपयोग करेंगे, और इतनी गहरी रिकर्सन x86 पर पहले x64 पर स्टैक ओवरफ्लो का कारण बन सकती है। आप इस समस्या को कम करने के लिए raising the stack limit आज़मा सकते हैं।

+3

यह एक बार कंपनी में हुआ जब मैंने काम किया ... स्पष्ट रूप से मैं इमारत में एकमात्र ऐसा था जो समझा सकता था कि ऐसा क्यों हुआ ... सी के उन वर्षों का भुगतान किया गया, और उन्हें 64 बिट भेजना पड़ा। –

+0

टिप्पणी और लिंक के लिए धन्यवाद - दोनों बहुत उपयोगी थे। और हां, स्टैक सीमा में वृद्धि ने भी मदद की। – Jefim

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