क्या कोई मुझे बता सकता है कि बूस्ट थ्रेड लाइब्रेरी लीक है या नहीं। ऐसा लगता है कि यह करता है: Google कहता है कि मुझे दोनों बूस्ट थ्रेड और पर्थ्रेड के साथ संकलित करना चाहिए जो मैं कर रहा हूं और संस्करण 1.40 में यह समस्या ठीक हो गई है लेकिन मुझे अभी भी रिसाव मिल गया है। ध्यान दें कि यह ठीक संकलित करेगा लेकिन लीक का पता लगाया जाएगा। http://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html फिर भी एक ही समस्या:बूस्ट थ्रेड लीकेज सी ++
#include <boost/thread.hpp>
#include <boost/date_time.hpp>
void t1(){}
int main(void){
boost::thread th1(t1);
th1.join();
return 1;
}
वेलग्रिंड के साथ मैं निम्नलिखित उत्पादन
HEAP SUMMARY:
==8209== in use at exit: 8 bytes in 1 blocks
==8209== total heap usage: 5 allocs, 4 frees, 388 bytes allocated
==8209==
==8209== 8 bytes in 1 blocks are still reachable in loss record 1 of 1
==8209== at 0x4024F20: malloc (vg_replace_malloc.c:236)
==8209== by 0x4038CCB: boost::detail::get_once_per_thread_epoch() (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x40329D4: ??? (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x4032B26: boost::detail::get_current_thread_data() (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x4033F32: boost::thread::join() (in /usr/local/lib/libboost_thread.so.1.42.0)
==8209== by 0x804E7C3: main (testboost.cpp)
==8209==
==8209== LEAK SUMMARY:
==8209== definitely lost: 0 bytes in 0 blocks
==8209== indirectly lost: 0 bytes in 0 blocks
==8209== possibly lost: 0 bytes in 0 blocks
==8209== still reachable: 8 bytes in 1 blocks
==8209== suppressed: 0 bytes in 0 blocks
मैं भी निम्नलिखित वेबसाइट पर सूचीबद्ध कोड के साथ करने की कोशिश की हो।
बढ़ावा स्रोतों में src/pthread/Once.cpp पर एक नज़र डालें। यह बहुत स्पष्ट है कि यह रिसाव नहीं करता है (केवल उस पैथ्रेड लाइब्रेरी फ़ंक्शंस की परिभाषाओं को देखें जो इसका उपयोग करता है)। – Mankarse
बूस्ट के बजाय 'std :: thread' का उपयोग करके, कोड मेरे लिए भी नहीं चलता है; यह 'std :: system_error' अपवाद के साथ समाप्त होता है। –
बस उपरोक्त लिंक में कोड आज़माएं और आप शायद वाल्ग्रिंड –