| delphisual hat folgendes geschrieben: |
| Typisiert |
Es heißt
dereferenzieren.
| Zitat: |
| new(P); // Bitte sagt mir was sich jetzt geändert hatt |
Du hast ein Speicherleck von 4 Bytes geschaffen.
Mit New(P) reservierst du Speicher auf den der Zeiger P danach zeigt. Diesen Speicher musst du mit Dispose(P) wieder freigeben.
Anstatt dem
Delphi-Quelltext
kannst du auch
Delphi-Quelltext
1:
| GetMem(P, SizeOf(Integer)); |
schreiben. Dann solltest du statt Dispose(P) aber FreeMem(P) aufrufen.
Für deinen Code ist der New-Aufruf nutzlos, da du den Zeiger mit P := @B auf den Speicherbereich an dem B liegt umbiegst. Der alte Wert, der von New zugewiesen wurde, geht verloren.
New() und Dispose() werden häufig bei verketteten Listen eingesetzt, wo man nicht weiß wieviel Elemente noch kommen können.