Valgrind: Speicher mit trivialem Programm unter Verwendung von
Bei dieser Frage geht es um eine Valgrind-Warnung über noch erreichbaren Speicher in einem triviales Programm, das den
Problem:
Ein triviales Programm, das den
#include <iostream> int main() { return 0; }
Antwort:
Die Valgrind-Warnung ist kein Fehler, sondern ein Besonderheit. Viele Implementierungen der C-Standardbibliothek verwenden ihre eigenen Speicherpoolzuweiser. Speicher für zerstörte Objekte wird nicht sofort freigegeben und an das Betriebssystem zurückgegeben, sondern zur späteren Wiederverwendung im Pool gehalten. Die Speicherpools werden auch nicht freigegeben, wenn das Programm beendet wird, was dazu führt, dass Valgrind den Speicher als noch erreichbar meldet.
Lösung:
Es gibt mehrere Möglichkeiten, das Pool-Caching zu deaktivieren und zwingen Sie die STL, Malloc zu verwenden und Speicher so schnell wie möglich freizugeben:
g++ -D__USE_MALLOC ...
export GLIBCPP_FORCE_NEW=1
export GLIBCXX_FORCE_NEW=1
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWarum meldet Valgrind mit einem trivialen Programm, das „' verwendet, immer noch erreichbaren Speicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!