Announcement

Collapse
No announcement yet.

Zeiger gueltigkeit

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeiger gueltigkeit

    Hallo,

    wie lange bleiben Zeiger erhalten, wenn sie in der Hauptfensterklasse definiert sind.

    zb :

    TMain = class (TForm)

    ...

    privat
    lpMeinTyp : ^TMeinTyp

    ...
    new(lpMeinTyp)
    ...

    end.

    Bis zum beenden des Programms ?

  • #2
    Hallo Frank,<br>der Zeiger ist gültig, bis das Formular zerstört wird. Aber Achtung: Du solltest auf keinen Fall vergessen den mit new(lpMeinTyp) angeforderten Speicher wieder freizugeben. Dafür verwendet man am besten im OnDestroy Handler des Formulars <br>Dispose(lpMeinTyp).<br>:-) Jens Schuman

    Comment


    • #3
      Hi

      Das stimmt nicht ganz.
      Jeder zeiger ist solange gültig bis er wieder freigeben wird.
      D.h. im obigen Beispiel kann man sehrwohl das Form zerstören, der
      Zeiger, bzw. die Addresse des belegten Speichers wird dadurch NICHT ungültig. Sollte also dieser Speicher nicht freigegeben werden ist dieser zeiger bis zur Beendigung der Anwendung gültig. Es entsteht somit ein "Memoryleak". Es können ja mehrere Zeigervariablen die gleiche Speicheradresse referenzieren, also z.B. 3 verschiedene Formulare zeigen auf den gleichen Speicher. Würde nun eines dieser Formulare zerstört und damit der Zeiger ungültig, müssten die 2 anderen Formulare ja "ungültige" zeiger enthalten. Ist aber nicht so.

      Gruß Hage

      Comment

      Working...
      X