C++ new ve delete
C ile dinamik bellek yönetimi sırasında kullanılan malloc, calloc, realloc ve free fonksiyonları yerine gelen new ve delete anahtar kelimeleri ile ilgili bilgiler yer alıyor.
C++ new ve delete nedir?
C ve C++ dilinin en önemli özelliği dinamik bellek yönetimine imkan vermesidir.
C içerisinde yer alan dinamik bellek yönetimi işlemleri C++ ile gelen NYP desteğini tam olarak sağlayamadığı için C++ ile bu işlemler new ve delete anahtar kelimeleri ile yapılır.
C++ içerisinde yer alan new ve delete operatörleri dinamik bellek yönetimi için kullanılır.
C++ new ve delete kullanımı
C programlama dili ile bellek yönetimi sırasında kullanılan malloc, calloc, realloc ve free fonksiyonları C++ programlarında da kullanılabilir.
Bu fonksiyonların dönüş değeri void* türünden olduğundan tür dönüşümüne ihtiyaç duyar.
#include <iostream>
int main()
{
int *p;
int i = 0;
p = (int*) malloc(sizeof(int) * 5);
free(p);
return 0;
}
Ancak new anahtar kelimesinin dönüş değeri olmadığından tür dönüşümüne ihtiyaç duymaz.
Aşağıda new ve delete komutu kullanımı yer alıyor.
#include <iostream>
int main()
{
int *p;
int i = 0;
p = new int[5];
delete[] p;
return 0;
}
C++ dili NYP desteği sayesinde Nesne Kurucu ve Yıkıcılarına sahiptir.
Ancak bu fonksiyonlar ile nesne oluşturulduğunda Nesne Kurucuları ve Yıkıcıları tetiklenmeyecektir.
#include <iostream>
using namespace std;
class Sayi
{
private:
int m_sayi;
public:
Sayi(int t_sayi) : m_sayi(t_sayi)
{
cout << this->m_sayi << endl;
}
~Sayi()
{
cout << "siliniyor";
}
};
int main()
{
Sayi *x = (Sayi*) malloc(sizeof(Sayi));
free(x);
return 0;
}
Aşağıda new ve delete komutu kullanımı yer alıyor.
#include <iostream>
using namespace std;
class Sayi
{
private:
int m_sayi;
public:
Sayi(int t_sayi) : m_sayi(t_sayi)
{
cout << this->m_sayi << endl;
}
~Sayi()
{
cout << "siliniyor";
}
};
int main()
{
Sayi *x = new Sayi(5);
delete x;
return 0;
}
C++ içerisinde yer alan new ve delete anahtar kelimeleri operatör olduğundan C içerisinde yer alan bellek yönetimi fonksiyonlarına göre daha hızlıdır.
C dili içerisinde yer alan realloc fonksiyonu diziyi yeniden boyutlandırmak için kullanılır.
Ancak C++ dili içerisinde bu fonksiyona eşdeğer bir anahtar kelime yoktur.
Bu işlem için C++ içerisinde yer alan STL kütüphanelerinin kullanımı faydalı olacaktır.
Hayırlı günler dilerim.