2014-05-12 17 views
5

Tôi đang thử nghiệm dll của mình mà tôi đã tạo. Nó lần lượt sử dụng một số dll khác. Ứng dụng trình kiểm tra Dll của tôi báo cáo rò rỉ bộ nhớ khi tôi khởi động ứng dụng thử nghiệm và thoát mà không làm bất cứ điều gì ngoại trừ việc tải dll bằng cách sử dụng LoadLibrary. Nó không hiển thị các tệp chính xác trong mã nguồn dll của tôi. Không có rò rỉ nếu tôi không tải dll. Nó là một dll MFC và có lớp ứng dụng. Tôi loại bỏ tất cả mọi thứ từ lớp ứng dụng của dll vì vậy nó không có gì nhưng tôi vẫn nhận được báo cáo rò rỉ bộ nhớ khi tôi tải nó. Tôi tạo ra một bộ dll giả và ứng dụng thử nghiệm nhưng điều đó không báo cáo bất kỳ rò rỉ vì vậy nó đã làm với dll ban đầu của tôi, có lẽ liên kết của nó với dlls khác?Đây có phải là báo cáo rò rỉ bộ nhớ dương tính giả không?

Tôi đã thử sử dụng kỹ thuật _crtBreakAlloc = {allocation_#}; nhưng cũng không dừng trình gỡ rối. Tôi khá mất nếu rò rỉ bộ nhớ này là có thật. Tôi thấy từ documentation nó có thể báo cáo dương tính giả. Điều này có thể sai tích cực chỉ vì dll của tôi được liên kết với bó của dlls khác? Tôi không thể nghĩ ra bất cứ điều gì khác bởi vì tôi đã nhận xét tất cả các chức năng từ dll.

Đây là rò rỉ bộ nhớ erros

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. 

Có một cách khác để tôi có thể kiểm tra lại bộ nhớ bị rò rỉ không tồn tại? Tôi cài đặt deleaker là tốt nhưng nó là chương trình buggy, nó giữ trên các tập tin pdb và không phát hành nó ... khiến tôi đau hơn.

+1

Chỉ cần xác minh, bạn có gọi 'FreeLibrary' trước khi thoát khỏi chương trình của bạn không? – Velox

+0

Có, tôi thậm chí có một tệp nhật ký đăng nhập khi nó tải và dỡ bỏ dll nhưng tôi đã nhận xét ngay cả chức năng đó. – zar

+1

[This MSKB] (http://support.microsoft.com/kb/167929) có thể có liên quan. –

Trả lời

6

Theo bài viết MSKB sau, đây có lẽ là mong đợi:

Memory leaks are reported when you use multiple MFC DLLs

Trích dẫn từ trang liên kết:

Những rò rỉ bộ nhớ được báo cáo khi nhiều phiên bản của MFC DLL được nạp trong cùng một quy trình. Kể từ khi MFC mở rộng (AFXDLL) DLL yêu cầu chính xác cùng MFC DLL như ứng dụng cuộc gọi, vấn đề này chỉ có thể xảy ra khi sử dụng MFC thường xuyên (USRDLL) DLL hoặc ActiveX điều khiển (OCX) sử dụng phiên bản chia sẻ của MFC.

Trường hợp phổ biến nhất là trộn các phiên bản ANSI (MFC4xd.DLL) và UNICODE (MFC4xxUd.DLL) của MFC trong cùng một quy trình. Điều này cũng có thể xảy ra khi trộn MFC42d.DLL và MFC40d.DLL.

Và như xa như giải quyết "vấn đề" đi:

Những thông báo bộ nhớ bị rò rỉ là sai sự thật, và có thể được bỏ qua. Kể từ khi không phải bản sao của MFC biết về những người khác, nó không phải dễ dàng để ngăn chặn những rò rỉ giả từ được báo cáo.

Các vấn đề liên quan