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.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!