TMemoryStream Memory leak?
-
Hallo,
bin auf der Suche nach einem Memory - Leak in einer Anwedung.
Kann jemand bestätigen dass folgendes korrekt ist - oder meinen Fehler in diesem Code aufzeigen?
TMemoryStream * tms = new TMemoryStream(); // mach was mit dem stream.... tms->SaveToFile(file); delete tms;
-
Nein, der Code erzeugt kein Memory Leak. Jedenfalls nicht, wenn
SaveToFile
keine Exception wift. Grundsätzlich solltest du dir aber angewöhnen, die C++ Smart Pointer (std::unique_ptr
undstd::shared_ptr
) zu benutzen. Dabei musst du allerdings etwas aufpassen, die landläufig empfohlene Konstruktion perstd::make_shared
darfst du bei VCL Klassen nicht benutzen, da sie kein placement new unterstützen und dann UB produzieren (Erklärung siehe hier).Also:
#include <memory> auto tms = std::make_unique<TMemoryStream>(); auto->SaveToFile( file );
-
Nein, der Code erzeugt kein Memory Leak.
Vielen Dank, hilft immerhin weiter dass ich woanders suchen muss.