Nil

N00byStance

nil - słowo kluczowe; jest to stała, która może być przypisana do każdego wskaźnika (Pointer). Kiedy wskaźnik ma wartość nil, nie wskazuje na żaden adres.

Z praktycznego punktu widzenia, alokacja danych jest dokonywana na stosie [ang.stack] (głównie przekazywanie parametrów oraz zmienne lokalne) lub na stercie [ang. heap] (zmienne dynamiczne, obiekty). Pod adresem zerowym sterty znajduje się blok opisu sterty i nie może on zostać nadpisany danymi.

Dlatego nie istnieje dostępny blok pamięci zaalokowany dla zmiennych dynamicznych pod tym adresem. Stąd wartość 0 wskaźnika jest interpretowana jako "wskaźnik na żaden adres" bez straty adresu z puli możliwej do przypisania.

Przykład pokazujący, że wskażnik nil jest w rzeczywistości wskaźnikiem zawierającym wartość zero:

program Przyklad;

{$APPTYPE CONSOLE}

begin
WriteLn(integer(nil));
end.

3 komentarzy

Zawsze się zastanawiałem dlaczego nil, a nie NULL - dopiero ostatnio skapowałem, że to skrót od łacińskiego nihil :)

Nooby czego chcesz to dobry tekst, temat więcej nie wymaga!

Ładne rozwinięcie :D