Memleak
-
Hi leute.
Habt ihr eine Idee warum nach ausführen von folgendem code memory leaks entstehen?
{ // CMemFile memfile // int datasize BYTE detachedBuffer[1024]; memcpy(&detachedBuffer[0],&datasize,sizeof(datasize)); memcpy(&detachedBuffer[4],memfile.Detach(),datasize); }Vielen dank im voraus!
cheers,
Mike
-
Vermutlich weil Detach() den vom Memfile verwalteten Speicherblock in deine Verantwortung übergeben hat - das heißt, du bist auch dafür verantwortlich den Speicher freizugeben.
-
Vermutlich weil Detach() den vom Memfile verwalteten Speicherblock in deine Verantwortung übergeben hat - das heißt, du bist auch dafür verantwortlich den Speicher freizugeben.
der speicher wird doch dem BYTE objekt übergeben und sollte doch beim "}" wieder freigegeben werden oder?
das ::Detach() führt auch ein ::Close() des memfile objekts aus.
Urspürnglich erhielt ich auch keine memleaks, erst seitdem ich diese zeile hinzugefügt habe.memcpy(&detachedBuffer[0],&datasize,sizeof(datasize));cheers,
mike
-
yeah so funzt jetzt
{ BYTE detachedBuffer[1024]; BYTE* pB = memfile.Detach(); memcpy(&detachedBuffer[0],&datasize,sizeof(datasize)); memcpy(&detachedBuffer[4],pB,datasize); free(pB); }danke das mit dem detach/buffer war die lösung!
cheers,
mike