delete[]
Operatör silme diziler için kullanılır. delete
Operatör dizi olmayan nesnelerin kaldırılması için kullanılır. Sırasıyla, dizinin öğeleri veya dizi olmayan nesne için yıkıcıları çağırdıktan sonra (nihayetinde) işgal ettiği dizinin veya dizi olmayan nesnenin işgal ettiği belleği silmek için çağırır operator delete[]
ve operator delete
işlev görür.
Aşağıdaki, ilişkileri göstermektedir:
typedef int array_type[1];
// create and destroy a int[1]
array_type *a = new array_type;
delete [] a;
// create and destroy an int
int *b = new int;
delete b;
// create and destroy an int[1]
int *c = new int[1];
delete[] c;
// create and destroy an int[1][2]
int (*d)[2] = new int[1][2];
delete [] d;
Bunun new
bir dizi oluşturması için (yani, bir dizi türü yapısına uygulanır new type[]
veya bu new
yapıya uygulanır), Standart operator new[]
, dizinin öğe türü sınıfında veya genel kapsamda bir arar ve istenen bellek miktarını iletir. İstediğinden daha fazlasını isteyebilir N * sizeof(ElementType)
(örneğin öğelerin sayısını saklamak için, böylece daha sonra silme sırasında kaç yıkıcı çağrısının yapılacağını bilir). Sınıf operator new[]
, bellek miktarına ek olarak bir diğerini kabul ederse size_t
, bu ikinci parametre tahsis edilen elemanların sayısını alır - bunu istediği herhangi bir amaç için kullanabilir (hata ayıklama, vb ...).
Bu, new
dizi olmayan bir nesne oluşturur için operator new
, elemanın sınıfında veya genel kapsamda bir arayacaktır . İstenen bellek miktarını geçirir (tam olarak sizeof(T)
her zaman).
İçin, delete[]
dizilerin öğe sınıf türüne bakar ve yıkıcılarını çağırır. Kullanılan operator delete[]
işlev, öğe türünün sınıfındaki bir işlevdir veya hiçbiri yoksa, o zaman genel kapsamdadır.
İçin delete
, eğer geçirilen işaretçi gerçek nesnenin türünün temel bir sınıfı ise, temel sınıf sanal bir yıkıcıya sahip olmalıdır (aksi takdirde, davranış tanımsızdır). Bu bir temel sınıf değilse, o sınıfın yıkıcısı çağrılır ve operator delete
o sınıfta bir veya global operator delete
kullanılır. Bir temel sınıf geçildiyse, o zaman gerçek nesne türünün yıkıcısı çağrılır ve operator delete
bu sınıfta bulunan kullanılır veya hiçbiri yoksa, global operator delete
çağrılır. Eğer operator delete
sınıfta tipte ikinci bir parametresi vardır size_t
, bu ayırması eleman sayısını alır.