Witam.
Tak się zastanawiam czy jeżeli na kontrolce TFrame są komponenty to czy po zwolnieniu pamięci (TFrame.Free) giną też dane komponentów z kontrolki czy tkwią gdzieś w pamięci i trzeba je osobno zwalniać i czy podobnie jest gdy jako parametr Parent kontrolki TButton ustawimy TPanel to po zwolnieniu pamięci TPanel ginie TButton. I jeszcze pytanie czy jest rezerwowana pamięć dla zmiennych zadeklarowanych w procedure/function nawet gdy się ich nie użyło (procedur/funkcji)?
I jeszcze pytanie czy jest rezerwowana pamięć dla zmiennych zadeklarowanych w procedure/function nawet gdy się ich nie użyło (procedur/funkcji)?
Zależy co przez to rozumiesz.
Obiekty nie są tworzone, dopóki nie wywołasz ich konstruktora, a zmienne typu integer
czy string
mają swoje miejsce nawet, gdy ich nie używasz (chociaż nie wiem, czy optymalizator takich zmiennych automatycznie nie wywala z kodu w czasie kompilacji).
Tak się zastanawiam czy jeżeli na kontrolce TFrame są komponenty to czy po zwolnieniu pamięci (TFrame.Free) giną też dane komponentów z kontrolki czy tkwią gdzieś w pamięci i trzeba je osobno zwalniać i czy podobnie jest gdy jako parametr Parent kontrolki TButton ustawimy TPanel to po zwolnieniu pamięci TPanel ginie TButton
http://delphi.about.com/od/objectpascalide/a/owner_parent.htm
I jeszcze pytanie czy jest rezerwowana pamięć dla zmiennych zadeklarowanych w procedure/function nawet gdy się ich nie użyło (procedur/funkcji)?
Zazwyczaj nie, pamięć w ogóle może nie być dla nich przypisywana w przypadku optymalizacji. Zazwyczaj po prostu wszystko jest odkładane na stos czyli każde wywołanie procedury powoduje stworzenie wszystkich zmiennych na stosie.
Obiekty nie są tworzone, dopóki nie wywołasz ich konstruktora, a zmienne typu integer czy string mają swoje miejsce nawet, gdy ich nie używasz (chociaż nie wiem, czy optymalizator takich zmiennych automatycznie nie wywala z kodu w czasie kompilacji).
Obiekt to nie klasa. Obiektów konstruktora się nie wywołuje bo jest automatycznie wywoływany i zwalniany gdy nie ma do niego referencję. Klasa nie jest referencjowana i trzeba ręcznie wywołać konstruktor i destruktor.