new delete operators c with examples
C ++ 'da Yeni / Sil Operatörleri Hakkında Her Şeyi Keşfedin.
Daha önceki eğitimlerimizde C ++ 'da değişkenleri ve statik dizileri zaten görmüştük.
Değişkenlere ve dizilere ayrılan bellek söz konusu olduğunda, veri türüne (değişkenler durumunda) ve diziler için sağlanan boyutlara bağlı olarak derleyici tarafından ayrılan statik bellektir.
Derleyici tarafından ayrılan bellek yığın üzerinde tahsis edilir. Ancak çoğu durumda, ihtiyacımız olan belleğin tam miktarının farkında olmayabiliriz.
=> Popüler C ++ Eğitim Serisini Buradan Okuyun.
Yapacağımız şey, istediğimiz kadar bellek ayırmak ve aynı zamanda istediğimiz zaman ve istediğimiz zaman ayırmaktır. Bu, belleğin dinamik olarak tahsis edilmesiyle yapılır. Statik ayırmanın aksine, dinamik olarak ayrılmış bellek yığın üzerinde ayrılır.
Dinamik bellek ayırma, derleyici tarafından ayrılmış bellekle elde edemediğimiz değişken boyutlu belleği ayırabildiğimiz için kullanışlıdır. Belleği ihtiyacımız olduğunda ayırma ve ihtiyacımız olmadığında ayırma esnekliğine sahibiz.
Ancak, bu kullanımların yanı sıra, dinamik olarak ayrılmış bellek olması durumunda, belleğin yeniden ayrılmasının kullanıcının sorumluluğunda olduğunu da unutmamalıyız. Belleği ayırmayı unutursak, bu, bir bellek sızıntısına neden olur, burada bellek, program sona erene kadar serbest bırakılmaz.
Bu, çok fazla bellek kullanımına neden olabilir ve bu nedenle ciddi darboğazlara neden olabilir.
Ne öğreneceksin:
- Dinamik Bellek Tahsisi
- 'Yeni' Operatör
- Dizilerle 'yeni' Operatörü Kullanma
- Silme Operatörü
- Sonuç
- Önerilen Kaynaklar
Dinamik Bellek Tahsisi
C dili, belleği dinamik olarak ayırmak için 'malloc', 'calloc' ve 'realloc' işlevlerini kullanır. Bu fonksiyonlarla dinamik olarak tahsis edilen hafızanın tahsisini geri almak için, 'serbest' fonksiyon çağrısını kullanır. C ++ dili ayrıca bellek ayırmak / ayırmak için C dilinden bu işlevleri destekler.
Bu işlevlerin yanı sıra C ++, dinamik belleği yönetmek için daha verimli olan iki yeni operatör sunar. Bunlar, bellek ayırmak için 'yeni' operatör ve bellek ayırma işlemi için 'sil' operatörüdür.
Bu eğiticide, C ++ dilinde yeni ve silme operatörleri hakkında daha fazla bilgi edineceğiz.
'Yeni' Operatör
'Yeni' işleci, bir değişken veya bir öbek üzerindeki diğer herhangi bir varlık için bellek ayırır.
'Yeni' operatörün genel sözdizimi şöyledir:
pointer_variable_of_data_type = new data type;
Yukarıda belirtilen veri türü, C ++ tarafından desteklenen herhangi bir geçerli veri türü olabilir. Yerleşik bir veri türü veya sınıflar ve yapılar dahil herhangi bir kullanıcı tanımlı veri türü olabilir.
Örneğin,
oculus rift, ps4 ile uyumlu mu
int *ptr = NULL; ptr = new int();
Yukarıdaki örnekte, tamsayıya bir işaretçi değişkeni 'ptr' bildirdik ve onu null olarak başlattık. Sonra 'yeni' operatörünü kullanarak belleği 'ptr' değişkenine ayırıyoruz. Yığın üzerinde bellek varsa, ikinci ifade başarılı olacaktır. Kullanılabilir bellek yoksa, yeni işleç 'std :: bad_alloc' istisnası atar.
Bu nedenle, programda bu değişkeni veya varlığı kullanmadan önce belleğin yeni operatör tarafından başarıyla tahsis edilip edilmediğini kontrol etmek daha iyi bir fikirdir.
Ayrıca yeni operatörü kullanarak değişkenleri aşağıdaki gibi başlatabiliriz:
ptr = new int(10);
Yukarıdaki örnekte, işaretçi değişkeni 'ptr', yeni operatör kullanılarak ayrılmış bellektir ve aynı zamanda atanan değer 10'dur. Bu, C ++ 'da başka bir başlatma yöntemidir.
Dizilerle 'yeni' Operatörü Kullanma
'Yeni' operatörün bir başka kullanımı da diziler için bellek ayırmaktır. Burada dizi için ayrılacak elemanların sayısını belirtiyoruz.
'Yeni' operatörü kullanılarak dizi öğelerinin tahsisine bir Örnek aşağıda verilmiştir:
int* myarray = NULL; myarray = new int(10);
Burada, yeni operatör, myarray gösterici değişkenine tamsayı türünde 10 sürekli öğe ayırır ve göstericiyi dizimin ilk öğesine döndürür.
Silme Operatörü
Yeni operatör kullanılarak dinamik olarak tahsis edilen bellek, programcı tarafından açıkça serbest bırakılmalıdır. Bu amaçla, 'silme' operatörü sağlanmıştır.
Silme operatörünün genel sözdizimi şöyledir:
delete pointer_variable;
Böylece yukarıdaki ptr değişkenine ayrılan belleği aşağıdaki gibi serbest bırakabiliriz:
delete ptr;
Bu ifade, 'ptr' değişkenine ayrılan belleği bellek havuzuna geri döndürür.
Dizilere ayrılan belleği boşaltmak için silme operatörünü de kullanabiliriz.
Örneğin,yukarıdaki myarray dizisine ayrılan bellek aşağıdaki gibi serbest bırakılabilir:
delete() myarray;
Silme operatörüyle kullanılan alt simge operatörüne dikkat edin. Bunun nedeni, eleman dizisini tahsis ettiğimiz için tüm konumları serbest bırakmamız gerektiğidir.
Bunun yerine, ifadeyi kullansaydık,
delete myarray;
Myarray'in dizideki ilk öğeyi gösterdiğini biliyoruz, bu nedenle yukarıdaki ifade dizinin yalnızca ilk öğesini silecektir. Alt simge '()' kullanılması, belleği serbest bırakılan değişkenin bir dizi olduğunu ve ayrılan tüm belleğin serbest bırakılacağını belirtir.
Aşağıdaki programlama Örneği, C ++ 'da yeni ve silme operatörlerinin kullanımını gösterir.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Çıktı:
başarıyla ayrılmış bellek
* ptr = 10
* var = 12
myarray değerleri: 1 2 3 4 5 6 7 8 9 10
b ağacı - b + ağacı
Aynısı için ekran görüntüsü aşağıda verilmiştir.

Yukarıdaki kod örneğinde, yeni ve silme operatörlerinin kullanımını gösterdik. Bir değişken, diziler için bellek ayırmak ve başka bir değişkeni bir değerle başlatmak için 'yeni' operatörünü kullandık. Daha sonra silme operatörünü kullanarak bu varlıkları siliyoruz.
Sonuç
Bu, standart veri türleri söz konusu olduğunda C ++ 'nın yeni ve silme operatörleriyle ilgilidir. Sınıflar ve yapılar olarak kullanıcı tanımlı veri türleri için yeni ve silme operatörleri de kullanabiliriz.
C ++ kullanarak nesne yönelimli programlamayı öğrendiğimizde, nesneler oluşturmak için bu operatörlerin kullanımı hakkında daha fazla bilgi edineceğiz.
=> C ++ Yeni Başlayanlar Kılavuzuna Bir Göz Atın.
Önerilen Kaynaklar
- Unix Kabuk Komut Dosyası Aritmetik ve Boole Operatör Örnekleri
- MongoDB Güncelleme ve Örneklerle Belge Silme
- C ++ Operatörleri, Türleri ve Örnekler
- Python Operatörleri
- Örneklerle Python DateTime Eğitimi
- Örneklerle Unix'te Kesme Komutu
- Örneklerle C ++ 'da Kabarcık Sıralama
- Unix Cat Komut Sözdizimi, Örneklerle Seçenekler