c++ - Memory corruption when using boost::shared_ptr in a multithreaded environment -
* glibc detected * malloc (): स्मृति भ्रष्टाचार (तेज): ***
यह एक त्रुटि है जो मुझे मिलती है, जब एक बहुस्तरीय वातावरण में, मैं कोड के इस भाग को निष्पादित करता हूं:
/// कुछ घोषणाएं typedef बढ़ावा :: share_ptr & lt; ऑब्जेक्ट & gt; ObjectPtr; ऑब्जेक्ट पीटीआर getObject () {ऑब्जेक्ट पीटीआर (नया ऑब्जेक्ट रिटर्न); } /// क्या वास्तव में एक धागा शून्य निष्पादन में निष्पादित किया गया है वर्क () {... ObjectPtr ऑब्जेक्ट = getObject (); / * & Lt; --- यहां स्मृति भ्रष्टाचार! * / ...}
क्या आप मेरी मदद कर सकते हैं?
< P> मुझे नहीं पता कि यह आपकी विशिष्ट समस्या को कैसे मदद करता है, लेकिन
make_shared
का उपयोग करने के लिए कभी कभी वांछनीय है और new
से बचें। ऐसा:
<पूर्व> रिटर्न बूस्ट :: मेक-शेरेड & लेफ्टिनेंट; ऑब्जेक्ट & gt; (/ * निर्माता के लिए कोई भी तर्क यहाँ / /);
इसके अतिरिक्त, आप boost :: shared_ptr
की बजाय std :: shared_ptr
कोशिश कर सकते हैं। वे संभवतः वही हैं, लेकिन शायद नहीं? इसे TR1 के माध्यम से उपयोग करने के लिए, मेरा मानना है कि आप #include & lt; tr1 / memory & gt;
मैं आमतौर पर केवल सी ++ 0x के माध्यम से इसका उपयोग करता हूं, उस स्थिति में यह #include & lt; मेमोरी & gt;
और
Comments
Post a Comment