2014-05-12 8 views
5

मैं अपने डीएलएल का परीक्षण कर रहा हूं जो मैंने बनाया था। यह बदले में कई अन्य डीएलएस का उपयोग करें। जब मैं परीक्षण अनुप्रयोग शुरू करता हूं और LoadLibrary का उपयोग करके डीएल लोड करने के अलावा कुछ भी किए बिना बाहर निकलता हूं तो मेरा डीएल परीक्षक एप्लिकेशन मेमोरी लीक की रिपोर्ट करता है। यह मेरे डीएलएल स्रोत कोड में सटीक फाइल नहीं दिखाता है। अगर मैं डीएलएल लोड नहीं करता तो कोई रिसाव नहीं है। यह एक एमएफसी डीएल है और इसमें ऐप क्लास है। मैंने डीएलएल ऐप क्लास से सब कुछ हटा दिया है, इसलिए यह कुछ भी नहीं करता है लेकिन जब भी मैं इसे लोड करता हूं तब भी मुझे स्मृति लीक रिपोर्ट मिलती है। मैंने डमी डीएल और टेस्ट एप्लिकेशन का एक और सेट बनाया लेकिन यह किसी भी रिसाव की रिपोर्ट नहीं करता है, इसलिए इसे मेरे मूल डीएल के साथ करना है, शायद यह अन्य डीएलएस के साथ जुड़ाव है?क्या यह एक झूठी सकारात्मक स्मृति रिसाव रिपोर्ट हो सकती है?

मैंने _crtBreakAlloc = {allocation_#}; तकनीक का उपयोग करने का प्रयास किया है, लेकिन यह डीबगर को भी रोक नहीं देता है। अगर यह स्मृति रिसाव असली है तो मैं काफी खो गया हूं। मैं documentation से देखता हूं यह झूठी सकारात्मक रिपोर्ट कर सकता है। क्या यह गलत सकारात्मक हो सकता है क्योंकि मेरा डीएल अन्य डीएलएस के गुच्छा से जुड़ा हुआ है? मैं किसी और चीज के बारे में सोच नहीं सकता क्योंकि मैंने डीएलएल से सभी कार्यक्षमताओं पर टिप्पणी की है।

यहाँ स्मृति रिसाव मिली त्रुटियाँ

Detected memory leaks! 
Dumping objects -> 
{250} client block at 0x00567E40, subtype c0, 64 bytes long. 
a CDynLinkLibrary object at $00567E40, 64 bytes long 
a CDynLinkLibrary object at $00567E40, 64 bytes long 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {244} normal block at 0x00567C20, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {243} normal block at 0x00567BC8, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {242} normal block at 0x00567B58, 52 bytes long. 
Data: < x   > E4 B8 07 78 11 00 00 00 11 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {241} normal block at 0x00566C08, 40 bytes long. 
Data: < x   > E4 B8 07 78 0B 00 00 00 0B 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {240} normal block at 0x00566BA8, 32 bytes long. 
Data: < x   > E4 B8 07 78 07 00 00 00 07 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {239} normal block at 0x00566B50, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {238} normal block at 0x00566AE0, 46 bytes long. 
Data: < x   > E4 B8 07 78 0E 00 00 00 0E 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {237} normal block at 0x00566A70, 48 bytes long. 
Data: < x   > E4 B8 07 78 0F 00 00 00 0F 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {235} normal block at 0x005676B0, 42 bytes long. 
Data: < x   > E4 B8 07 78 0C 00 00 00 0C 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {234} normal block at 0x00567658, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {233} normal block at 0x00567600, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {232} normal block at 0x00567590, 50 bytes long. 
Data: < x   > E4 B8 07 78 10 00 00 00 10 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {231} normal block at 0x00567538, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {230} normal block at 0x005674E0, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {229} normal block at 0x00567488, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {228} normal block at 0x00567430, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {227} normal block at 0x005673D8, 24 bytes long. 
Data: < x   > E4 B8 07 78 03 00 00 00 03 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {226} normal block at 0x00567380, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {225} normal block at 0x00567328, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {224} normal block at 0x005672C0, 40 bytes long. 
Data: < x   > E4 B8 07 78 0B 00 00 00 0B 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {223} normal block at 0x00567268, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {222} normal block at 0x00567200, 44 bytes long. 
Data: < x   > E4 B8 07 78 0D 00 00 00 0D 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {221} normal block at 0x00567198, 38 bytes long. 
Data: < x   > E4 B8 07 78 0A 00 00 00 0A 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {220} normal block at 0x00567140, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {219} normal block at 0x005670E8, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {218} normal block at 0x00567080, 38 bytes long. 
Data: < x   > E4 B8 07 78 0A 00 00 00 0A 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {217} normal block at 0x00567028, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {216} normal block at 0x00566FD0, 24 bytes long. 
Data: < x   > E4 B8 07 78 03 00 00 00 03 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {215} normal block at 0x00566F78, 24 bytes long. 
Data: < x   > E4 B8 07 78 03 00 00 00 03 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {214} normal block at 0x00566F18, 36 bytes long. 
Data: < x   > E4 B8 07 78 09 00 00 00 09 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {213} normal block at 0x00566EC0, 24 bytes long. 
Data: < x   > E4 B8 07 78 03 00 00 00 03 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {212} normal block at 0x00566E68, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {211} normal block at 0x00566E10, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {210} normal block at 0x00566DB8, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {209} normal block at 0x00566D60, 24 bytes long. 
Data: < x   > E4 B8 07 78 03 00 00 00 03 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {208} normal block at 0x00566D08, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {207} normal block at 0x00566CB0, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {206} normal block at 0x00561918, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {205} normal block at 0x005618C0, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {204} normal block at 0x00561868, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {202} normal block at 0x005669F8, 60 bytes long. 
Data: < x   > E4 B8 07 78 15 00 00 00 15 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {201} normal block at 0x00566988, 46 bytes long. 
Data: < x   > E4 B8 07 78 0E 00 00 00 0E 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {200} normal block at 0x00566920, 42 bytes long. 
Data: < x   > E4 B8 07 78 0C 00 00 00 0C 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {199} normal block at 0x005668C8, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {198} normal block at 0x00566868, 32 bytes long. 
Data: < x   > E4 B8 07 78 07 00 00 00 07 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {197} normal block at 0x00566800, 44 bytes long. 
Data: < x   > E4 B8 07 78 0D 00 00 00 0D 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {196} normal block at 0x00566790, 50 bytes long. 
Data: < x   > E4 B8 07 78 10 00 00 00 10 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {195} normal block at 0x00566718, 60 bytes long. 
Data: < x   > E4 B8 07 78 15 00 00 00 15 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {194} normal block at 0x005666C0, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {193} normal block at 0x00566040, 48 bytes long. 
Data: < x   > E4 B8 07 78 0F 00 00 00 0F 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {192} normal block at 0x00561C98, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {81} normal block at 0x00561BA0, 32 bytes long. 
Data: < x   > E4 B8 07 78 07 00 00 00 07 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {80} normal block at 0x00561B48, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {79} normal block at 0x00561AE0, 44 bytes long. 
Data: < x   > E4 B8 07 78 0D 00 00 00 0D 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {78} normal block at 0x00561A80, 34 bytes long. 
Data: < x   > E4 B8 07 78 08 00 00 00 08 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {77} normal block at 0x00561A20, 30 bytes long. 
Data: < x   > E4 B8 07 78 06 00 00 00 06 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {76} normal block at 0x005613D0, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {75} normal block at 0x005619A8, 56 bytes long. 
Data: < x   > E4 B8 07 78 13 00 00 00 13 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {74} normal block at 0x00561378, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {72} normal block at 0x005617F8, 48 bytes long. 
Data: < x   > E4 B8 07 78 0F 00 00 00 0F 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {71} normal block at 0x005617A0, 28 bytes long. 
Data: < x   > E4 B8 07 78 05 00 00 00 05 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {70} normal block at 0x00561748, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {69} normal block at 0x005616D0, 54 bytes long. 
Data: < x   > E4 B8 07 78 12 00 00 00 12 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {68} normal block at 0x00561670, 34 bytes long. 
Data: < x   > E4 B8 07 78 08 00 00 00 08 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {67} normal block at 0x00561618, 22 bytes long. 
Data: < x   > E4 B8 07 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {66} normal block at 0x005615B8, 36 bytes long. 
Data: < x   > E4 B8 07 78 09 00 00 00 09 00 00 00 01 00 00 00 
Object dump complete. 

वहाँ एक और तरीका है मैं दोगुनी मेमोरी लीक मौजूद नहीं है की जाँच कर सकते है है? मैंने डिलीकर को भी इंस्टॉल किया लेकिन यह छोटी गाड़ी कार्यक्रम है, यह पीडीबी फाइलों पर रखता है और इसे जारी नहीं कर रहा था ... जिससे मुझे और दर्द हुआ।

+1

बस सत्यापित करने के लिए, क्या आप अपने प्रोग्राम से बाहर निकलने से पहले 'फ्री लाइब्रेरी' कहते हैं? – Velox

+0

हां, मैं भी एक लॉग फ़ाइल करता हूं जो लॉग इन करता है और डीएल को अनलोड करता है लेकिन मैंने उस कार्यक्षमता पर भी टिप्पणी की है। – zar

+1

[यह एमएसकेबी] (http://support.microsoft.com/kb/167929) प्रासंगिक हो सकता है। –

उत्तर

6

निम्नलिखित MSKB लेख के अनुसार, यह शायद उम्मीद है:

Memory leaks are reported when you use multiple MFC DLLs

लिंक किए गए पृष्ठ से हवाला देते हुए:

इन मेमोरी लीक रिपोर्ट किए जाते हैं MFC DLL के कई संस्करण एक ही प्रक्रिया में लोड कर रहे हैं। चूंकि एमएफसी एक्सटेंशन (AFXDLL) DLLs को कॉल एप्लिकेशन के रूप में सटीक उसी एमएफसी डीएलएल की आवश्यकता होती है, तो यह समस्या केवल एमएफसी नियमित (यूएसआरडीएलएल) डीएलएल या ActiveX नियंत्रण (ओसीएक्स) का उपयोग करते समय हो सकती है जो एमएफसी के साझा संस्करण का उपयोग करती है।

सबसे आम मामला एक ही प्रक्रिया में एमएफसी के एएनएसआई (एमएफसी 4xd.DLL) और यूनिकोड (एमएफसी 4xx यूडी.डीएलएल) संस्करणों को मिला रहा है। यह MFC42d.DLL और MFC40d.DLL को मिलाते समय भी हो सकता है।

और जहाँ तक "समस्या" को हल करने के रूप में चला जाता है:

ये स्मृति रिसाव सूचनाएं गलत हैं, और ध्यान नहीं दिया जा सकता है। चूंकि न तो एमएफसी की प्रतिलिपि अन्य लोगों के बारे में जानती है, इसलिए को इन झूठी रिसावों की रिपोर्ट होने से रोकना आसान नहीं है।

संबंधित मुद्दे