Delete

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Ujednoznacznienie Ten artykuł dotyczy operatora w C++. Zobacz też: Delete (klawisz).

delete (z ang. skasuj) - w C++ operator niszczący obiekty utworzone za pomocą operatora new (bądź dowolny obiekt, którego adres można pobrać).

Wywołanie delete [] wskaznik spowoduje usunięcie tablicy obiektów pokazywanych wskaznikiem wskaznik. Nie jest konieczne podawanie rozmiaru tablicy usuwanych obiektów, gdyż (zależnie od systemu operacyjnego, kompilatora itp) jest on pamiętany w specjalnej tablicy alokacji, która zawiera zakresy alokowanych przedziałów pamięci.

Przykład w języku C++[edytuj | edytuj kod]

int* wsk;
wsk = new int;
delete wsk; // zniszczenie obiektu poprzez wymazanie obszaru pamięci,
            // na jaki pokazuje wsk

const int iloscElementow = 20;
int* tab;
tab = new int[ iloscElementow ];
delete [] tab; // zniszczenie tablicy obiektów pokazywanych przez tab

Należy zwrócić szczególną uwagę na poprawność użycia operatora delete. Wiele trudnych do wykrycia błędów w programach jest skutkiem użycia delete[] na wskaźniku do pojedynczego obiektu lub samego delete na wskaźniku do tablicy obiektów.

Innym, często spotykanym błędem, jest dwukrotne wywołanie delete na tym samym wskaźniku. Dlatego dobrym zwyczajem jest przypisanie wartości NULL zmiennej zaraz po zwolnieniu pamięci przez nią wskazywanej. Wykonanie delete na wartości NULL nie powoduje żadnego skutku i jest bezpieczne.


Zobacz też[edytuj | edytuj kod]