delete[]Operator służy do usuwania tablic. deleteOperator jest używany do usuwania przedmiotów nie tablicy. Wywołuje operator delete[]i operator deletedziała odpowiednio w celu usunięcia pamięci, którą zajmowała tablica lub obiekt niebędący tablicą po (ostatecznie) wywołaniu destruktorów dla elementów tablicy lub obiektu niebędącego tablicą.
Poniżej przedstawiono relacje:
typedef int array_type[1];
array_type *a = new array_type;
delete [] a;
int *b = new int;
delete b;
int *c = new int[1];
delete[] c;
int (*d)[2] = new int[1][2];
delete [] d;
Dla newktóry tworzy tablicę (tak, albo new type[]czy newstosowany do konstrukcji typu macierz), wygląd standard w odniesieniu do operator new[]klasy typu elementu tablicy lub w zasięgu globalnym i przekazuje żądaną ilość pamięci. Może zażądać więcej niż N * sizeof(ElementType)gdyby chciał (na przykład zapisać liczbę elementów, aby później podczas usuwania wiedział, ile wywołań destruktora ma wykonać). Jeśli klasa zadeklaruje, operator new[]że dodatkowy do ilości pamięci akceptuje inny size_t, ten drugi parametr otrzyma liczbę przydzielonych elementów - może go użyć w dowolnym celu (debugowanie itp.).
W przypadku tego, newktóry tworzy obiekt niebędący tablicą, będzie szukał operator neww klasie elementu lub w zasięgu globalnym. Przekazuje żądaną ilość pamięci (dokładnie sizeof(T)zawsze).
W przypadku delete[], sprawdza typ klasy elementów tablic i wywołuje ich destruktory. operator delete[]Funkcja używana jest jeden w klasie typu elementu, albo jeśli nie ma nikogo wtedy w zasięgu globalnym.
W przypadku delete, jeśli przekazany wskaźnik jest klasą bazową rzeczywistego typu obiektu, klasa bazowa musi mieć wirtualny destruktor (w przeciwnym razie zachowanie jest niezdefiniowane). Jeśli nie jest to klasa bazowa, wywoływany jest destruktor tej klasy i używany jest operator deletew tej klasie lub globalnej operator delete. Jeśli przekazano klasę bazową, wywoływany jest destruktor rzeczywistego typu obiektu i operator deleteużywany jest element znaleziony w tej klasie, a jeśli nie ma, operator deletewywoływany jest element globalny . Jeśli operator deleteklasa ma drugi parametr typu size_t, otrzyma liczbę elementów do zwolnienia.