new libstdc ++ von gcc5.1 kann großen Heapspeicher zuweisen

8

valgrind erkennt "noch erreichbares Leck" in einem leeren Programm, das mit gcc5.1, g++ ./a.cpp ,

kompiliert wurde %Vor%

valgrind sagt, valgrind ./a.out ,

%Vor%

Bei c-Programmen meldet valgrinds keine Speicherlecks und keine Speicherzuweisung. Darüber hinaus meldet Valgrinds für gcc5.0 und gcc4.9.2 keine Speicherlecks und auch keine Speicherzuordnung. Dann denke ich, dass das neue libstdc ++ von gcc5.1 die Ursache ist.

Meine Frage ist, wie man diese riesige Speicherzuweisung, die in libstdc ++ sein kann, reduzieren kann. Tatsächlich ist die Ausführungszeit dieses leeren C ++ - Programms, das mit -O3 kompiliert wurde, um einige Millisekunden (ohne systime) größer als eins des leeren c-Programms.

    
akakatak 22.05.2015, 09:34
quelle

1 Antwort

8

Der Speicherbereich wird in libsup ++ als Notausnahmepuffer zugewiesen.

Ссылка

Die Entwickler sprechen davon, die Spur in Valgrind möglicherweise zu unterdrücken, aber am Ende wurde vermutlich nichts getan. Der einzige Weg, um es jetzt aus der Spur zu entfernen, wäre wahrscheinlich, Ausnahmen zu deaktivieren, aber es sieht nicht so aus, als wäre es eine große Sache, es ist nicht so, als könnte der Speicher für etwas anderes zurückgewonnen werden, bevor das Programm beendet wird / p>     

user657267 22.05.2015, 10:12
quelle

Tags und Links