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; और + + 0x को अपने जी + + झंडे में जोड़ें। / P>


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

AJAX doesn't send POST query -

wpf - Custom Message Box Advice -