Mutatókat Delphi, Delphi, Delphi komponens Delphi forrás
Mutatókat Delphi
Itt az ideje, hogy megismerjék a mutató. Ez egy nagyon hasznos elem nyelvet, hogy gyakran használják. Ez a fejezet fog foglalkozni mutatókat struktúrák, amelyek a kupac.
De mielőtt magyarázni valamit, úgy hogy miért van szükség a mutatók. Emlékezzünk az eljárást, nevezetesen milyen az hívást. Tegyük fel, hogy van egy eljárás nevű muRgos, amely két paramétert: a szám és string. Hogy az a kihívás egy ilyen eljárás, és hogyan továbbítják ezeket a paramétereket? Nagyon egyszerű. Először is, a paramétereket figyelembe a verem (ne feledjük, hogy a köteg - egy memória átmeneti tárolására vagy lokális változók). Az első paraméter van tárolva az első, majd a második, majd az eljárást hivatkoznak. Az eljárás megindulása előtt annak végrehajtását, beolvassa a paramétereket a verem fordított sorrendben.
Most gondolj a lehetőségeinket. Az első - egy sor, hogy elfoglalja 2 bájt. Ha egy bejegyzést a zsetonjait, tart ott az előírt 2 bájt. A második lehetőség - a húr. Minden karakter a húr - egyetlen bájtot. Tegyük fel, hogy a vonal áll a 10 karaktert. Ez azt jelenti, hogy az átviteli vonal egy ilyen eljárás a verem lesz szüksége 10 byte plusz 1 bájt jelzi a sor végére vagy annak mérete (attól függően, hogy a vonal típusát). Összesen továbbítására az eljárásban kell verem legalább 12 bájt. Ez nem annyira, így ez engedheti meg magának.
És ha kell átadni az eljárás képméret 3 megabájt? Ez azt is másolni a stack? Számos kiváló minőségű kép - és Stack végén.
Ki ez a helyzet elég egyszerű. Nem tudja átadni a húr, de csak át egy mutatót a memória terület, ahol ezt a sort. Bármilyen mutatót úgy 4 bájt, és ez jelentős megtakarítást eredményez. Csak így eljárásunk, hogy megértsék, hogy hol találja a vonalat.
A mutató a Delphi nyilvánították Pointer. Például, nézzük, hogy egy változót típusú mutató p:
var r: Pointer Str: String; kezdődik
p: = @ Str; // a mutató hivatkozás egy string str = „Hello barátom”; // értékét megváltoztatja Edit1 vonalon.
Szöveg: = String (P74); // I levezetni szöveg végén;
Bármilyen mutató változó lehet rendelni értéke nulla, akkor nem csak a száma 0, a nulla - null pointer, például p: = nil (elvileg nulla ugyanaz Ó, csak használják, hogy állítsa vissza a mutató). Amikor hozzárendel értéke nulla, akkor hogyan kell törölni a link. Hasonlóképpen, ha egy objektum változó rendelni értéke nulla, el fog pusztítani téged. Soha nullára változók mutatókat, hogy pont a meglévő létesítmények. Első elpusztítják tárgyak (szabad memória), és akkor lehet rendelni egy mutatót nulla.
TIP. A Windows, nincs hulladék szedők, hogy létezik a Java, és ha az alany nem memóriát szabadít fel, akkor el fog veszni. Vannak olyan esetek, amikor az index nullázás tényleg memóriát szabadít fel, de ez nem mindig történik meg. Ezért csak akkor lehet állítani a COM objektumok (ebből fogunk beszélni külön-külön). Az nullázást vezet memóriát szabadít fel.