मैं मेमोरी लीक डिटेक्शन लाइब्रेरी की तलाश में हूं। कुछ ऐसा है जैसे मैं इसे स्रोत कोड में शामिल करूँगा, फिर इसे पहचानना शुरू करना चाहिए। बाहरी कार्यक्रम अच्छे हो सकते हैं लेकिन मैं कुछ पुस्तकालय की तलाश में था जिसे निष्पादन योग्य में जोड़ा जा सकता है।
यह मैं विंडोज़ की तलाश में हूं।सी ++ मेमोरी लीक ऑटो डिटेक्शन लाइब्रेरी
उत्तर
मेरे लिए यह बहुत लंबे समय के लिए था सबसे अच्छा उपकरण: http://www.paulnettle.com/pub/FluidStudios/MemoryManagers/Fluid_Studios_Memory_Manager.zip बस 1 हेडर फाइल में शामिल और आपका काम हो इसके साथ :) उपरोक्त के
यदि आप वीसी ++ का उपयोग कर रहे हैं, तो उस कार्यक्षमता में बनाया गया है। गैर-एमएफसी ऐप्स के लिए Finding Memory Leaks Using the CRT Library और Detecting memory leaks in MFC एमएफसी ऐप्स के लिए देखें।
विजुअल स्टूडियो में विंडोज़ पर ऐसी सुविधा है। http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=VS.90).aspx देखें। लिनक्स के तहत मुझे नहीं पता कि ऐसी चीजें मौजूद हैं, लेकिन valgrind सभी तरह की मेमोरी समस्याओं को खोजने के लिए वास्तव में अच्छा है (न केवल लीक, बल्कि उदाहरण के लिए अमान्य पढ़ता है)।
मैं Visual Leak Detector का सुझाव दे सकता हूं, विजुअल स्टूडियो में निर्मित एक से अधिक उपयोग करना आसान है।
मेमोरी रिसाव का पता लगाने के लिए आप अपने कोड में कुछ तकनीकों का उपयोग कर सकते हैं। पता लगाने का सबसे आम और सबसे आसान तरीका है, एक मैक्रो कहते हैं, DEBUG_NEW परिभाषित करें और अपने कोड में मेमोरी लीक का पता लगाने के लिए __FILE__
औरजैसे पूर्वनिर्धारित मैक्रोज़ के साथ इसका उपयोग करें। ये पूर्वनिर्धारित मैक्रोज़ आपको स्मृति लीक की फ़ाइल और लाइन संख्या बताते हैं।
DEBUG_NEW सिर्फ एक मैक्रो जो आम तौर पर के रूप में परिभाषित किया जाता है:
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
ताकि भी आप new
उपयोग करते हैं, यह भी है, जिसमें स्मृति रिसाव का पता लगाने का इस्तेमाल किया जा सकता फ़ाइल और लाइन नंबर का ट्रैक रख सकते अपने कार्यक्रम।
और __FILE__
, __LINE__
predefined macros हैं जो क्रमशः फ़ाइल नाम और लाइन नंबर का मूल्यांकन करते हैं जहां आप उनका उपयोग करते हैं!
निम्न आलेख जो अन्य रोचक मैक्रो के DEBUG_NEW का उपयोग कर, बहुत खूबसूरती से की तकनीक बताते पढ़ें:
A Cross-Platform Memory Leak Detector
Wikpedia से,
Debug_new में एक तकनीक को संदर्भित करता है C++ ओवरलोड और/या ऑपरेटर को फिर से परिभाषित करने के लिए नया और ऑपरेटर क्रम में हटाएं मेमोरी आवंटन और डेलोकेशन कॉल को अवरुद्ध करता है, और इस प्रकार मेमोरी उपयोग के लिए प्रोग्राम डीबग करता है। यह अक्सर DEBUG_NEW नामक एक मैक्रो निर्धारित करना पड़ता है, और नए बनाता आवंटन पर फ़ाइल/रेखा जानकारी रिकॉर्ड करने बनने कुछ नया (_ फ़ाइल _, _ लाइन _) की तरह। माइक्रोसॉफ्ट विजुअल सी ++ इस तकनीक को माइक्रोसॉफ्ट फाउंडेशन क्लासेस में उपयोग करता है। मैक्रो पुनर्नवीनीकरण का उपयोग करते हुए से बचने के लिए इस विधि को विस्तारित करने के तरीके हैं, जबकि कुछ प्लेटफ़ॉर्म पर फ़ाइल/रेखा जानकारी प्रदर्शित करने में सक्षम हैं। इस विधि में कई अंतर्निहित सीमाएं हैं।यह केवल सी ++ पर लागू होता है, और सी मैलोक जैसे कार्यों द्वारा मेमोरी लीक नहीं पकड़ सकता है। हालांकि, कुछ मेमोरी डीबगर समाधान की तुलना में उपयोग करने के लिए बहुत आसान हो सकता है और तेज भी हो सकता है।
अलावा, मैं कुछ अच्छा सलाह दे सकते हैं कार्यक्रम: ^) उदाहरण के रूप में? विंडोज के लिए डिलीकर का उपयोग करना अच्छा होगा।
- 1. अजीब "मेमोरी लीक डिटेक्शन" त्रुटि सी ++
- 2. जी ++ मल्टी-प्लेटफार्म मेमोरी लीक डिटेक्शन टूल
- 3. वीएस2012, सी ++ 11 और मेमोरी लीक डिटेक्शन (वीएलडी बनाम सीआरटीडीबीजी)
- 4. मेमोरी लीक सी ++
- 5. सी/सी ++ स्ट्रिंग मेमोरी लीक?
- 6. valgrind - साझा लाइब्रेरी में मेमोरी लीक पाएं
- 7. सी # इवेंट आधारित मेमोरी लीक
- 8. सी # - ईएसईएनटी डीबी मेमोरी लीक?
- 9. छवि लोडिंग मेमोरी लीक सी #
- 10. मेमोरी लीक यूनिट टेस्ट सी ++
- 11. सी #: मेमोरी लीक अनुकरण करें
- 12. सी # डब्ल्यूपीएफ बिटमैपसोर्स मेमोरी लीक?
- 13. ओपनएसएसएल :: एसएसएल_library_init() मेमोरी लीक
- 14. मेमोरी मेमोरी लीक इश्यू
- 15. मेमोरी लीक
- 16. मेमोरी लीक
- 17. मेमोरी लीक
- 18. मेमोरी लीक
- 19. एसबीजेसन - मेमोरी लीक है?
- 20. एंबेडेड आयरनपीथन मेमोरी लीक
- 21. सी # एक्सेल स्वचालन एक्सेल मेमोरी लीक
- 22. यूनिट परीक्षण मेमोरी लीक
- 23. मेमोरी लीक समस्या
- 24. एआरसी मेमोरी लीक
- 25. सी ++ स्थिर वर्ग और साझा_पीटीआर मेमोरी लीक
- 26. पायथन: मेमोरी लीक डीबगिंग
- 27. पायथन मेमोरी लीक?
- 28. माइक्रोसॉफ्ट.Web.Administration मेमोरी लीक
- 29. PHP इमेजिक मेमोरी लीक
- 30. मेमोरी लीक - सिग्नल 9
मेरे द्वारा +1। यह लीक का पता लगाने के लिए मेरे पसंदीदा तरीकों में से एक है लेकिन आवंटित पतों की सूची बनाए रखना और उन्हें प्रत्येक डिलीट पर हटाने के लिए भेजे गए पते के खिलाफ जांच करना प्रदर्शन प्रोत्साहन (ओ (एन) = एनएलओएल (एन) है। यहां उल्लेख करना महत्वपूर्ण है , केवल डीबग बिल्ड में तकनीक का उपयोग करने के लिए और रिलीज बिल्ड पर नहीं। –
@ एएलएस: मैंने सोचा था कि यह स्पष्ट था कि इस तकनीक का उपयोग केवल डीबग बिल्ड में किया जाना चाहिए, क्योंकि मैंने चुना मैक्रो नाम (या आमतौर पर चुना गया) 'DEBUG_NEW' है। – Nawaz
बस इसका एक स्पष्ट उल्लेख है। आपके पास वैसे भी मेरा +1 है :) मैं किसी भी यूनिकॉर्न को अन्य दिन के रूप में नहीं देख सका .... –