Zitat von
mumu:
vielen vielen dank für die ausführliche antwort !!!!
aber eine frage hätte ich noch:
Delphi-Quellcode:
p_char: PChar;
begin
...
p_char := nil;
FreeMem(p_char);
end;
macht sowas sinn? wenn ich doch den p_char auf nil setz, dann kann ich doch den speichernbereich mit FreeMem nicht mehr freigeben, weil ich ja net weiß, wohin der p_char zeigt, oder?
// edit:
ahh hier steht ja die antwort, sorry
Zitat:
Die Variable lediglich auf den Wert nil zu setzen ist sinnlos. Wenn ich den Speicher noch nicht freigegeben habe, verliere ich damit die Referenz auf den Speicher (der somit allokiert bleibt). Wenn ich den Speicher bereits freigegeben habe, benötige ich eine Zuweisung auf nil nicht mehr.
Da man PChars in der Regel auch zum Referenzieren von Speicherblöcken benutzt und nicht, weil sie bei den Variablen-Definitionen schick aussehen, muss man diese Speicherblöcke auch wieder freigeben.
aber trotzdem nochmal die frage, damit ich mir auch 100 prozentig sicher bin:
folgendes in der reihenfolge kann eigentlich nie sinn machen, oder?
p_char := nil;
FreeMem(p_char);
weil ich schnall irgendwie net, warum mein vorgänger, dass bei jedem p_char gemacht hat?! Ich würd auf sowas eigentlich schon gar nicht kommen?!