2009-07-26 11 views
17

का अर्थ है मेरी कार्यक्रम चलाने जब मैं इस त्रुटि मिलती है कोड में बहुत गहराई से इसे कॉपी करने के लिए। अगर मैं समझता हूं कि यह त्रुटि क्या है, तो शायद मैं इसे समझ सकता हूं। क्या यह गलत स्मृति पता पर पढ़ने या लिखने के साथ किसी समस्या का संकेत है?क्या इस सी ++ त्रुटि std :: length_error

क्या मेरे प्रोग्राम से समस्या के बारे में अधिक जानकारी प्राप्त करने के लिए मैं कुछ कर सकता हूं?

+0

क्या आप कोड का कुछ टुकड़ा पोस्ट कर सकते हैं जहां आप स्ट्रिंग तक पहुंच रहे हैं? –

+1

स्ट्रिंग समस्या नहीं है। कुछ मामूली परिवर्तनों के बाद और डीबग संदेशों को जोड़ने के बाद मुझे एक वास्तविक सेगफॉल्ट मिल जाता है;) – Janusz

+1

केविन के जवाब के अतिरिक्त: हो सकता है कि आपने कुछ गणनाएं की हों जो नकारात्मक स्ट्रिंग लम्बाई का कारण बनती हैं? चूंकि स्ट्रिंग लम्बाई (सामान्य रूप से) एक हस्ताक्षरित मान के रूप में संग्रहीत होती है, इसलिए आपका नकारात्मक मान एक बहुत बड़ा सकारात्मक मान लेगा जो अधिकतर std :: string :: max_size() से अधिक है! – mmmmmmmm

उत्तर

20

इसका मतलब है कि आपने std :: string :: max_size() से अधिक स्ट्रिंग बनाने की कोशिश की है।

http://msdn.microsoft.com/en-us/library/as4axahk(VS.80).aspx

An exception of type length_error Class is thrown when an operation produces a string with a length greater than the maximum size.

+2

क्या इसका मतलब यह भी हो सकता है कि मेरी स्ट्रिंग अब स्मृति में नहीं है और मैं स्मृति से यादृच्छिक जंक पढ़ रहा हूं जब तक कि स्ट्रिंग बहुत बड़ी न हो? – Janusz

+14

आप आकार -1 की एक स्ट्रिंग बनाने की कोशिश करके गलती से इस स्थिति को बना सकते हैं। स्ट्रिंग आकार हस्ताक्षरित हैं, इसलिए -1 वास्तव में सबसे बड़ा संभव हस्ताक्षरित पूर्णांक है। – MSalters

0

यह VS2005 साथ डिबग मोड में कोई त्रुटि है। जब मैं इसे रिलीज मोड में बदलता हूं, तो सबकुछ काम करता है।

ठीक है, वीसी डीबग रनटाइम इसका कारण बनता है, यह सब कुछ है।

+4

स्टैक ओवरफ्लो में आपका स्वागत है और पोस्टिंग के लिए धन्यवाद। कृपया देखें [कैसे जवाब दें] (http://stackoverflow.com/questions/how-to-answer)। –

+0

डीबग से रिलीज तक स्विचिंग मेरे लिए भी काम किया, लेकिन वीएस -2008 64-बिट में। यह क्रैश हो रहा था जब मैं डीबगर एक रेखा को मार रहा था जिसने एक बहुत बड़ी मैट्रिक्स वस्तु बनाई थी। मुझे लगता है कि यह मैट्रिक्स को स्ट्रिंग के रूप में प्रदर्शित करने के लिए पर्याप्त स्थान आवंटित करने का प्रयास कर रहा था और यह इसे क्रैश कर रहा था। – partofthething

1

मुझे पता है कि यह एक पुराना सवाल है लेकिन मैं बस एक ही मुद्दे में भाग गया। जीसीसी के साथ लिनक्स का उपयोग करना।

फ़ंक्शन को अलग करने से कोड में बहुत सारे कूद दिखाई दिए, जहां अपवाद फेंक दिया गया था, जो वहां नहीं होना चाहिए। अंत में, एक स्वच्छ निर्माण ने मेरे लिए इस मुद्दे को हल किया।

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