[MFC/VC] MFC: Wycieki pamięci przy DLL

0

Tworzę sobie DLL-kę - nic szczególnego, operuje na tekście

DLL-ka jest stworzona jako
Win32 Projekt -> DLL -> MFC (typ kodowania znaków - NIE WYBRANO [Not Set])

no i teraz sobie ją dołączam - sprawdziłem na testowym projekcie

MFC App -> DialogBased App (typ kodowania znaków Mulit Byte)
zwykły dialog jeden tekxtbox, trzy buttony, tylko w celu testowania tej DLL-ki

jako tako posprawdzałem - było dobrze - to chciałem dołączyć ją do innego projektu

MFC App -> SDI -> Ribbon -> Klasa bazowa CFormView (typ kodowania znaków UNICODE)

no i po użyciu Project Dependences (czyli powiązania jednego z drugim)
nawet bez tworzenia obiektu czy wskaźnika na obiekt klasy z DLL-ki mam wycieki pamięci i to strasznie dużo

i nie wiem w czym jest problem - w tym testowym nie było wycieków wszystko działało, program kończył się ładnie i bezproblemowo, a tutaj cieknie jak z sita

jeśli by ktośm iał pomysł czemu tak jest to proszę o radę, co z tym trzeba zrobić

wycieki:

:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dllmodul.cpp(116) : {294} client block at 0x003AB080, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003AB080, 64 bytes long
a CDynLinkLibrary object at $003AB080, 64 bytes long
{293} client block at 0x003AB000, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003AB000, 64 bytes long
a CDynLinkLibrary object at $003AB000, 64 bytes long
{281} client block at 0x003A8B60, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003A8B60, 64 bytes long
a CDynLinkLibrary object at $003A8B60, 64 bytes long
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {276} normal block at 0x003A89D8, 22 bytes long.
Data: <,> x > 2C 3E A4 78 05 00 00 00 05 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {275} normal block at 0x003A8980, 22 bytes long.
Data: <,> x > 2C 3E A4 78 05 00 00 00 05 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {274} normal block at 0x003A8920, 34 bytes long.
Data: <,> x > 2C 3E A4 78 11 00 00 00 11 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {273} normal block at 0x003A88C8, 28 bytes long.
Data: <,> x > 2C 3E A4 78 0B 00 00 00 0B 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {272} normal block at 0x003A8870, 24 bytes long.
Data: <,> x > 2C 3E A4 78 07 00 00 00 07 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {271} normal block at 0x003A8818, 22 bytes long.
Data: <,> x > 2C 3E A4 78 05 00 00 00 05 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {270} normal block at 0x003A87B8, 31 bytes long.
Data: <,> x > 2C 3E A4 78 0E 00 00 00 0E 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {269} normal block at 0x003A8758, 32 bytes long.
Data: <,> x > 2C 3E A4 78 0F 00 00 00 0F 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {268} normal block at 0x003A86F8, 29 bytes long.
Data: <,> x > 2C 3E A4 78 0C 00 00 00 0C 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {267} normal block at 0x003A78D8, 19 bytes long.
Data: <,> x > 2C 3E A4 78 02 00 00 00 02 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {266} normal block at 0x003A7880, 22 bytes long.
Data: <,> x > 2C 3E A4 78 05 00 00 00 05 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {265} normal block at 0x003A7820, 33 bytes long.
Data: <,> x > 2C 3E A4 78 10 00 00 00 10 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {264} normal block at 0x003A77D0, 19 bytes long.
Data: <,> x > 2C 3E A4 78 02 00 00 00 02 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {263} normal block at 0x003A7780, 20 bytes long.
Data: <,> x > 2C 3E A4 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {262} normal block at 0x003A7730, 19 bytes long.
Data: <,> x > 2C 3E A4 78 02 00 00 00 02 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {260} normal block at 0x003A8268, 19 bytes long.
Data: <,> x > 2C 3E A4 78 02 00 00 00 02 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {259} normal block at 0x003A8218, 19 bytes long.
Data: <,> x > 2C 3E A4 78 02 00 00 00 02 00 00 00 01 00 00 00
......
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {71} normal block at 0x003A6EF8, 25 bytes long.
Data: <,> x > 2C 3E A4 78 08 00 00 00 08 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {70} normal block at 0x003A6BA0, 19 bytes long.
Data: <,> x > 2C 3E A4 78 02 00 00 00 02 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {69} normal block at 0x003A6B48, 26 bytes long.
Data: <,> x > 2C 3E A4 78 09 00 00 00 09 00 00 00 01 00 00 00
Object dump complete.

0

Po pierwsze zamiesc kilka linijek kodu naokolo strcore.cpp(141) i dllmodul.cpp (116) z podaniem nazwy metody/funkcji, ktora tam jest. Po drugie cieknac moze jesli zwaliles cos w projekcie testowym albo w inicjalizacji dllki (DllMain chyba).

0

Dzięki za odpowiedź

wydaje mi się, że przyczyną jest ustawienie Kodowania znaków (Character Set) - nawet gdy DLL-ka jest pusta, czyli klasa w DLL-ce ma tylko konstruktor i destruktor to pojawiają się te wycieki pamięci

wystarczy, że zmienię kodowanie znaków na takie jak w projekcie głównym i od razu przestaje wyciekać

jako, że jestem początkujący w temacie bardzo bym prosił o radę co z tym zrobić, żeby projekt DLL-ki był niezależny od kodowania, czyli działał dołączony do różnych projektów, bez względu na to jakie ones ą jeśli chodzi o ustawienie (Character Set)

1 użytkowników online, w tym zalogowanych: 0, gości: 1