[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Warum kein Speicherzugriffsfehler



Martin Steigerwald wrote:

Dann spiel ich am Wochenende nochmal mit einer korrekten Schleife rum. Ich find aber schon krass, dass ich in eigentlich freigegebene Speicherbereiche reinschreiben kann. Mir wäre es da ehrlich gesagt lieber, wenn der Kernel beim ersten Zugriff reagiere und damit Programmierer anleitet, korrekten Code zu schreiben ;).

Der Kernel weiß ja nichts davon -- Dein Programm fordert Speicher bei der eingebundenen malloc()-Bibliothek an. Diese wiederum wendet sich an den Kernel und besorgt dort Speicher in größeren Mengen. Wenn Du free() aufrufst, weiß zunächst nur Deine Speicherverwaltung, daß der Speicher freigegeben ist. Für den Kernel ist er weiterhin vergeben (an Dein Programm). Erst, wenn eine größere Menge Speicher an die malloc()-Bibliothek zurückgegangen ist, gibt sie den Speicher wieder ans System zurück. Wann genau das passiert (und ob überhaupt), hängt von der verwendeten Bibliothek ab und ist auch eine Wissenschaft für sich: es gilt z.B., Speicherverbrauch und Performance gegeneinander abzuwägen.

A.

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: