Hans wrote:
>> Und?
>> free() setzt den Speicher, den es freigibt nicht auf 0.
>
> In manchen Systemen schon.
Das ist dann ein Grund diese Systeme zu meiden :-)
Im Ernst: Ausser bei speziellen Debug-Builds wirst du
kaum ein System finden, dass bei einem free() den Speicher
ausnullt. Sowas würde auch komplett der C Philosophie
widersprechen. Getan wird nur das Allernotwendigste was
für den Job notwendig ist. malloc() nullt den Speicher
nicht aus. Wenn ich das will, muss ich calloc() benutzen.
Den Speicher auszunullen macht für free() überhaupt
keinen Sinn, daher macht das auch Keiner. Ganz im Gegenteil:
Wenn ich 200 MB allokiere und free() müht sich, unter
heftigem Pagen, durch den Speicher um den auf 0 zu setzen,
dann würde der Compilerhersteller mächtig Ärger kriegen.
Wenn ich das will, muss ich vor dem free() explizit
einen memset() benutzen.