c++ - Why did I get a Segmentation Fault with a map insert -


मैं एक pair & lt; स्ट्रिंग, वेक्टर & lt; float & gt; & Gt; एक मानचित्र में, पहले यह काम करता है, लेकिन कई छोरों के बाद, यह और अधिक सम्मिलित नहीं कर सकता और मुझे एक सेगमेंटेशन फॉल्ट फेंक सकता है क्या कोई संभव कारण दे सकता है?

बीटीडब्ल्यू: मैंने पहली बार एक फाइल पढ़ी और नक्शा (करीब 200,000 तत्व) उत्पन्न की और मैंने एक और फ़ाइल पढ़ी और पुराने नक्शे को अद्यतन किया। त्रुटि तब होती है, जब अद्यतन कदम।

क्या कोई मुझे ऊपर दी गई जानकारी के साथ मेरी मदद कर सकता है? बहुत बहुत धन्यवाद

कोड बहुत लंबा है ..... मैं सिर्फ पिछली कुंजी को मिटा देता हूँ और फिर एक नया सम्मिलित करता हूं, ऐसा लगता है कि जटिल नहीं है ..... लेकिन मुझे पागल बना देता है .... क्या आप अनुमान लगा सकते हैं कि यहां क्या हुआ?

धन्यवाद आपके सभी उत्तरों के लिए बहुत कुछ! और मुझे पता चला कि यह समस्या हल करने के लिए वास्तव में एक अच्छी जगह है। फिर से धन्यवाद, मैं अपने कोड को सरल बनाने और आज या कल को यहां जोड़ने की कोशिश करूंगा।

अपडेट: मैंने एमएसएन से कोड का इस्तेमाल किया और यह काम करता है, बहुत धन्यवाद, मेरे कोड को देखे बिना मेरी समस्या का हल ...... यहां अन्य तरह के दिल वाले लोगों के लिए भी बहुत धन्यवाद! हालांकि, मैं केवल एक ही जवाब के रूप में चुन सकता हूं।

सवाल में टाइप pair & lt; स्ट्रिंग, वेक्टर & lt; float & gt; & Gt; । आप प्रत्येक डालने पर उस जोड़ी की नकल करेंगे। यदि स्ट्रिंग या वेक्टर बड़ा है तो आप मेमोरी से बाहर चल सकते हैं।

संपादित करें: मेमोरी से बाहर चलने को ठीक करने के लिए, आप इस प्रकार कुंजी-वैल्यू जोड़े को कैसे जोड़ सकते हैं:

  जोड़ी और lt; नक्शा :: iterator, bool & gt; Insert_result = map.insert (make_pair (name, vector & lt; float & gt; ()); अगर (insert.second) {insert_result.first- & gt; second.swap (vector_read_in);}  

यह सुनिश्चित करेगा कि आप मेमोरी की प्रतिलिपि न करें, केवल इसे स्थानांतरित करें।


Comments