c++ - SEGMENTATION FAULT in vector<string> iterator function used to draw text to my self-coded GUI -
ग्रीटिंग्स सब,
त्रुटि: प्रोग्राम प्राप्त संकेत 'SIGSEGV', सेगमेंटेशन फॉल्ट
मुझे कोड: ब्लॉकों में उपरोक्त गलती को बनाने के लिए निम्नलिखित कोड के साथ कुछ समस्याएं आ रही हैं I यह एक चैट बॉक्स के लिए है जो मैं एक नेटवर्क चैट प्रोग्राम के लिए उपयोग कर रहा हूं जहां वेक्ट चैट चैट लॉग की प्रत्येक पंक्ति के लिए टेक्स्ट के तार से भर जाता है मुझे नहीं पता कि एक विभाजन की गलती क्यों फेंक रही है, क्योंकि मैं इस मेमोरी में किसी भी मेमोरी को लिखने की कोशिश नहीं कर रहा हूं।
त्रुटि बनाने वाली रेखा है [अगर (iter-> empty ()); ]। अगर मैं उस रेखा को हटाता हूँ तो यह अभी भी ड्राटेस्ट फंक्शन कॉल पर गलती को फेंक देगा।
क्या कोई मेरी सहायता कर सकता है? फिलहाल मेरे लिए यह दुःस्वप्न रहा है!
FYI -> मैं कोड :: ब्लॉकों पर उबंटू कोडिंग हूँ कार्यक्रम SDL का उपयोग करता है, खासकर 'नेट' और 'थ्रेड' हेडर DrawText फ़ंक्शन केवल टीटीएफ_रेन्डरटैक्स्टबल्डेड () और एसडीएल_BlitSurface के लिए एक आवरण है, लेकिन मुझे पता है कि त्रुटि ड्यूटिटेड फ़ंक्शन में सीधे नहीं है क्योंकि मैंने इसे कई मुद्दों के साथ कई अन्य परियोजनाओं के साथ उपयोग किया है।
वेक्टर में स्ट्रिंग्स के साथ समस्या होने की ओर इंगित करता है, लेकिन मैं क्या नहीं कर सकता?
शून्य GUI_ChatBox :: रेंडर (एसडीएल_सर्फफ़ेस * स्क्रीन) {int line = 0; (वेक्टर & lt; स्ट्रिंग & gt; :: reverse_iterator iter = L.rbegin (); iter! = एल.रेन्ड (); ++ आईटर) (यदि (आईटीआरए-> खाली ()) जारी है; ++ लाइन; ड्रा टेक्स्ट (स्क्रीन, इटर- & gt; c_str (), x, (y + ऊंचाई) - (पंक्ति * CHAR_HEIGHT)); }}
उपरोक्त उदाहरण में एल लाइनबफर - के लिए कम था। केवल एक अन्य फ़ंक्शन इसके साथ इंटरैक्ट करता है और यह वेक्टर को टेक्स्ट जोड़ने के लिए उपयोग किया जाता है। यहां यह है:
शून्य GUI_ChatBox :: AddText (std :: स्ट्रिंग पाठ) {++ अनुक्रमणिका; यदि (इंडेक्स & gt; = मैक्सलाइन) {index = maxLines; LineBuffer.erase (LineBuffer.begin ()); } LineBuffer.push_back (पाठ); }
यह फ़ंक्शन सामान्यतः std :: string पैरामीटर के रूप में एक चार * सरणी प्राप्त करेगा, लेकिन मैंने इसे किसी अन्य मुद्दे के साथ कहीं नहीं किया है।
जहां L
परिभाषित है? और यह कैसे शुरू किया जा रहा है? क्या किसी अन्य कोड को प्रारंभिकरण के बाद संशोधित किया जाता है, या तो जानबूझकर या गलती से? ऐसा लगता है कि सदिश में किसी कारण के लिए कचरा होता है। समस्या लगभग निश्चित रूप से आपके द्वारा प्रस्तुत कोड के साथ नहीं है, बल्कि किसी अन्य कोड के साथ जो L
के साथ इंटरैक्ट करती है हो सकता है कि आपको एक सरणी को कहीं और स्थान दिया जा रहा है जो कि एल
को रोकना है, उदाहरण के लिए।
Comments
Post a Comment