Dadurch wird kein Speicher freigegeben, den Sie newVideoSample->buffer
zugewiesen haben - Sie müssen ihn vor dem Löschen explizit freigeben.
Normalerweise wird diese Art der Freigabe in den Destruktor der Klasse geschrieben, so dass dies der Fall ist wird automatisch aufgerufen, wenn Sie delete
auf das dynamisch erstellte Objekt anwenden.
Danke @steve dafür, es zu erwähnen:)
delete newVideoSample;
Verwenden Sie jedoch einen intelligenten Zeiger , der den Speicher automatisch freigibt, zum Beispiel:
%Vor% Wenn ich etwas nicht verpasse, verwenden Sie einfach delete
:
Verwenden Sie delete
Es gibt auch eine Überladung , dh delete[]
In Modern C ++ wird immer empfohlen, Smart Pointer zu verwenden. Sie können boost::shared_ptr<T>
aus der Boost-Bibliothek verwenden.
Zuzuordnen - & gt; VideoSample * newVideoSample = neues VideoSample;
Löschen - & gt; lösche newVideoSample;
Wenn Sie das Objekt im selben Kontext löschen, ordnen Sie es besser auf dem Stapel zu. Wenn Sie es außerhalb des Kontextes löschen, vergessen Sie nicht, eine Referenz zu übergeben.
Und am wichtigsten, nicht löschen, wenn Ihr Prozess beendet wird, ist es sinnlos: P