मेरे पास एक प्रोजेक्ट है जहां मैं काम कर रहा हूं जहां मेरे पास std नक्शे के साथ कुछ अजीब व्यवहार है।#pragma पैक त्रुटि के कारण स्मृति भ्रष्टाचार - std map भ्रष्टाचार - डालने पर क्रैशिंग
मेरे पास अपना स्वयं का टाइपिफ़ नक्शा परिभाषित किया गया था जो एक कस्टम प्रकार के सूचक के लिए तारों को मैप किया गया था। जब भी मैं मानचित्र पर पहली जोड़ी जोड़ता हूं, तो एप्लिकेशन किसी भी समय क्रैश हो जाता है।
बहुत सारे गड़बड़ के बाद मैंने मानचित्र को बदल दिया और इसे मेरे आवेदन में पहली कॉल में स्थानांतरित कर दिया और यह अभी भी दुर्घटनाग्रस्त हो गया। मुझे नहीं पता कि क्या हो रहा है। किसी भी सहायता की सराहना की जाएगी।
इस समय क्रैश होता है जो कोड है।
CISInterface Debug [C/C++ Application]
gdb/mi (10/31/12 6:02 PM) (Suspended)
Thread [1] (Suspended: Signal 'SIGSEGV' received. Description: Segmentation fault.)
6 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const() 0x00000032fd49c416
5 std::operator< <char, std::char_traits<char>, std::allocator<char> >() basic_string.h:2317 0x0000000000417ec7
4 std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator() stl_function.h:230 0x000000000041706f
3 std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique() stl_tree.h:1170 0x0000000000415d00
2 std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::insert() stl_map.h:500 0x00000000004150eb
1 main() CISInterface.cpp:29 0x000000000041916d
gdb (10/31/12 6:02 PM)
/home/cillian/workspace/CISInterface/Debug/CISInterface (10/31/12 6:02 PM)
क्या अन्य क्षेत्रों मैं समस्या खड़ी कर सकता है कि पर विचार करना चाहिए -
LoggerPtr syslogger(Logger::getLogger("CISInterface"));
int main(int argc, char *argv[])
{
typedef std::map<string, string> MyMapDef;
MyMapDef tmpString;
tmpString.insert(MyMapDef::value_type("0000", "d"));
tmpString.insert(MyMapDef::value_type("1111", "d")); //Crashes here.
tmpString.insert(MyMapDef::value_type("2222", "d"));
// std::string configFile;
// int c;
// if(argc < 2)
// {
// //Must have c option
// std::cout << "Usage -c configFileName" << std::endl;
// exit(EXIT_FAILURE);
// }
//Rest of main commented out.
...
और यहाँ स्टैक ट्रेस है। क्या यह उन पुस्तकालयों में हो सकता है जिन्हें मैं जोड़ रहा हूं? मैंने कोड की इन पंक्तियों के साथ एक दूसरी परियोजना बनाई है जो समान पुस्तकालयों से जुड़ा हुआ है (लेकिन उनमें कोई कोड नहीं है जो उन्हें कॉल करता है।) और यह क्रैश नहीं होता है।
यदि आपके द्वारा पोस्ट किया गया कोड वास्तव में सभी कोड है, तो ** केवल ** चीज जो आपकी समस्या का कारण बन सकती है वह है 'लॉगरपीआरटी syslogger (लॉगर :: getLogger ("CISInterface")) के कारण भ्रष्टाचार ढेर है। 'मुख्य' में कोड सही है। उस लाइन पर टिप्पणी करने का प्रयास करें और देखें कि क्या आपको अभी भी दुर्घटना हो रही है या नहीं। – john
मैंने अभी आपके 'मुख्य() 'की प्रतिलिपि बनाई है और इसे यहां चलाया है (उबंटू 12.04, जीसीसी 4.6.3)। अभी तक कोई समस्या नहीं है। त्रुटि कहीं और होनी चाहिए। –
कौन सा लाइन 2 9 है? –