Menadลพment memorije je vrlo bitno kako u opลกtem programiranju, tako i u razvoju aplikacija u Delphi okruลพenju. Dva osnovna pravila kojih se uvek treba drลพati u vezi sa memorijom su: morate osloboditi resurse koji su bili zauzeti kreiranjem bilo kog objekta, i morate ih osloboditi „samo jednom“. Inaฤe, Delphi podrลพava tri tipa organizacije memorije za dinamiฤke elemente (elementi koji nisu u steku i globalnom podruฤju memorije):
- Svaki put kada kreirate neki objekat, potrebno je da ga „uniลกtite“ (oslobodite zauzete resurse). Ako ne uradite tako, memorija koja je zauzeta ovim objektom neฤe biti dostupna za druge objekte, i to sve dok se sam program ne okonฤa.
- Kada kreirate komponentu, moลพete odrediti posednika komponente prosleฤivanjem posednika konstruktoru komponente. Posednik komponente (najฤeลกฤe forma) je zatim odgovoran za destrukciju svih objekata (forma za sve komponente na formi) koje poseduje. Pa tako, ako kreirate komponentu i dodelite joj posednika, nemojte zaboraviti da je oslobodite.
- Kada alocirate memoriju za stringove, dinamiฤke nizove, i objekte referencirane interfejs varijablama, Delphi automatski oslobaฤa zauzetu memoriju kada reference izlaze iz podruฤja definisanosti. Nema potrebe da oslobaฤate stringove; kada postanu nedostupni, memorija se automatski oslobaฤa.
Druga vrsta problema moลพe da se javi ako pozovete dva puta destruktor za isti objekat – vratiฤe vam se greลกka. Destruktor predstavlja metodu koja sluลพi dealociranju memorijskog prostora. Mi sami moลพemo napisati programski kod za destruktor, i time preduhitriti podrazumevani Destroy destruktor, u sluฤaju potrebe da izvrลกimo neki kod pre same destrukcije.
Naravno, u vaลกem programskom kodu ne morate ruฤno upravljati dealokacijom memorije – ovo je neลกto ลกto ฤe Delphi uraditi za vas. Destroy metoda predstavlja virtuelni destruktor klase TObject. Najveฤi broj klasa koje zahtevaju „ฤiลกฤenje“ koda kada se objekti destruktuiraju, zaobilaze ovu virtuelnu metodu. Razlog zbog kojeg nikada ne bi trebalo da definiลกete novi destruktor jeste to ลกto se objekti najฤeลกฤe poniลกtavaju pozivom Free metode, a ova metoda umesto vas poziva Destroy virtuelnog destruktora. Free metoda je metoda koja pripada TObject klasi, a nasleฤuju je sve ostale klase.
Pratite Krstaricu na www.krstarica.com