Ahoj vsichni,
mam problem s funkci GetOpenFileName:
Pokud tuto f-ci pouziji (viz nize), tak pomoci taskmanageru zjistim ,ze moje aplikace zacne vyuzivat misto svych 2000Kb pameti asi 9000Kb, misto 2 vlaken ma 13 vlaken a naskacou ji USER a GDI objekty. Tento stav pretrva i po skonceni dialogu (GetOpenFileName)..
Poradte mi prosim, co s tim mam delat - aplikace pak vetsinou po par vterinach spadne...
/////////////////////
string ssFN="";
OPENFILENAME ofn;
char szFileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = GetDesktopWindow();
ofn.lpstrFilter = "*.mp3\0*.mp3\0*.wma\0*.wma\0*.wav\0*.wav\0";
ofn.lpstrFile = hwnd;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST/* | OFN_ALLOWMULTISELECT*/;
ofn.lpstrDefExt = "mp3";
if(GetOpenFileName(&ofn)){
SendDlgItemMessage(hwnd,IDLBplaylist,LB_ADDSTRING,0,(LPARAM)(LPCTSTR) szFileName);
ssFN=szFileName;
Orezat(hwnd, ssFN, "\\");
GetDlgItemText(hwnd, IDESKLAD , szFileName , MAX_PATH );
SendDlgItemMessage(hwnd,IDLBplaylistSHOW,LB_ADDSTRING,0,(LPARAM)(LPCTSTR) szFileName);
}
ZeroMemory(&ofn, sizeof(OPENFILENAME));
//////////////////////////////
Fórum › C / C++
GetOpenFileName() - navyseni pameti
Vsak to funguje spravne, nevidim v tom problem. GetOpenFileName funkce si donacte potrebne knihovny a moduly, ktere samozrejme potrebuji nejakou pamet a vlakna pro zpracovani (ale to si delaji vnitrne). A to, ze po skonceni dialogu se pamet neuvolni, je logicke, protoze ten dialog je pouze zavreny a ne zruseny, tim padem nemuzou byt uvolnene prostredky. Navic, pokud se ty knihovny nahraji samy, tak nevim tedka o zpusobu, jak je zavrit, jelikoz nemas jejich handle. Jit to musi urcite, protoze to umi debuggery, ale jak, to snad odpovi google.
Nebo muzes zkusit uvolnit strukturu OPENFILENAME, ale pochybuju, ze to uvolni i ty nahrane knihovny.
Moje reseni - hlavni program spusti a pocka na ukonceni vedlejsiho programu, ltery vyvola potrebny dialog a posle vybrany soubor hlavni aplikaci....
Jeste jsem zapomnel napsat, ze nekdy po spusteni vyse uvedeneho kodu aplikace zatuhne..
To je myslim podle me volovina a je to skrabani se pravou rukou za levym uchem. Nevim, proc ti vadi ten narust, kdyz je to proste normalni fungovani a podle me i logicke.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
GetOpenFileName OFN_ALLOWMULTISELECT - Názvy souborů — založil ProXicT
"realokace" paměti — založil Passassa
Problém s pamětí — založil michi
Uvolneni pameti — založil BigBear
Uvolnění paměti — založil Martin
Moderátoři diskuze