Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Yeni Konu C++ new ve delete nedir?

Asperix

Yönetici
Yazılım Uzmanı
Katılım
2 Ara 2022
Mesajlar
52
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.

C++:
#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.

C++:
#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.

C++:
#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.

C++:
#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.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar