Was bedeutet diese Valgrind-Warnung? - Warnsatz Adressbereich Dauerwellen

77

Als ich mein Programm gegen valgrind ausführte, wurde die folgende Warnung angezeigt.

Nach einigem googeln habe ich hier festgestellt , dass es ein ist Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions, was mir nicht viel sagt.

Mein Programm reserviert eine große Menge an Speicher auf dem Heap. (Kann 2-3 GB RAM nach einer ganzen Reihe von erreichen realloc)

Die Warnung wurde jedoch angezeigt, obwohl keine der Zuweisungen fehlgeschlagen war.

Ich frage mich also, was diese Nachricht wirklich bedeutet. Ich habe keine Speichererlaubnis? (Aber die Zuordnung war erfolgreich)

Jimmy Lu
quelle

Antworten:

80

Dies bedeutet lediglich, dass sich die Berechtigungen für einen besonders großen Speicherblock geändert haben.

Das kann wegen etwas passieren wie ein Anruf mprotectoder wenn eine sehr große Speicherzuweisung oder Aufhebung der Zuordnung erfolgt - eine mmapoder munmapAnruf zum Beispiel.

Das erste, das Sie auflisten, ist das Festlegen von ca. 320 MB Speicher, undefinedwas höchstwahrscheinlich eine neue Zuordnung ist, die anfänglich als undefiniert markiert wird. Die anderen setzen beide Blöcke ähnlicher Größe, noaccesswas wahrscheinlich mit einer Freigabe des Speichers zusammenhängt.

TomH
quelle
2
Aha. Ist das etwas, worüber man sich jemals Sorgen machen sollte? (Ich vermute nicht, wie es ist mostly for benefit of the Valgrind developers?)
Jimmy Lu
14
Ich habe meine Antwort ein wenig erweitert und präzisiert, aber im Grunde genommen ist es im Allgemeinen nichts, worüber Sie sich Sorgen machen müssen.
TomH
Was ist, wenn fünf Fehler aufgelistet sind, die enden mit: (definiert) - (kein Zugriff) - (definiert) - (kein Zugriff) - (definiert)?
Adam Hunyadi