Freigegebenen Speicher mit ipcrm unter Linux löschen
Ich arbeite mit einer Shared Memory-Anwendung und verwende den folgenden Befehl, um die Segmente zu löschen:
ipcrm -M 0x0000162e (this is the key)
Aber ich weiß nicht, ob ich die richtigen Dinge tue, denn wenn ich renneipcs
Ich sehe das gleiche Segment aber mit dem Schlüssel 0x0000000. Ist das Speichersegment also wirklich gelöscht? Wenn ich meine Anwendung mehrmals ausführe, werden mit dem Schlüssel 0x000000 verschiedene Speichersegmente angezeigt, wie folgt:
key shmid owner perms bytes nattch status
0x00000000 65538 me 666 27 2 dest
0x00000000 98307 me 666 5 2 dest
0x00000000 131076 me 666 5 1 dest
0x00000000 163845 me 666 5 0
Was passiert eigentlich? Ist das Speichersegment wirklich gelöscht?
Bearbeiten Das Problem bestand - wie in der akzeptierten Antwort unten erwähnt - darin, dass zwei Prozesse den gemeinsam genutzten Speicher verwendeten. Bis alle Prozesse geschlossen waren, wird das Speichersegment nicht verschwinden.