Sayfayı Yazdır | Pencereyi Kapat

C++ Smart Pointer

Nereden Yazdırıldığı: Datakent
Kategori: Diğer bölümler
Forum Adı: C, C++, Visual C++
Forum Tanımlaması: C, C++, Visual C++ Örnekleri
URL: http://forum.datakent.com/forum_posts.asp?TID=2991
Tarih: 27.Ekim.2020 Saat 02:54


Konu: C++ Smart Pointer
Mesajı Yazan: murat turan
Konu: C++ Smart Pointer
Mesaj Tarihi: 07.Aralik.2017 Saat 21:54
Klasik C++ pointer tanımlama ve yok etme (silme)
void FuncMightLeak()
{
    MyType* pFirst = new MyType();

    if (!process())
    {
        delete pFirst;
        return;
    }

    MyType* pSecond = new MyType();

    if (!processSecond())
    {
        delete pFirst;
        delete pSecond;
        return;
    }

    process();
    delete pFirst;
    delete pSecond;
}


Yeni nesil C++ derleyiciler (c++ 17 >=) smart pointer ile tanımlamayı daha basitleştirdiği gibi silme işlemleriylede ilgili kod bloklarını ortadan kaldırıyor zira return (kod bitişi sonrası) pointer değişkenler otomatik olarak kaldırılıyor.
void FuncNoLeaks()
{
    auto pFirst = std::make_unique<MyType>();

    if (!process())
        return;

    auto pSecond = std::make_unique<MyType>();

    if (!processSecond())
        return;

    process();
}

Smart pointer: std::make_unique, std::make_shared, std::unique_ptr, std::shared_ptr


-------------
http://www.kasatakip.com - Kasa Takip  |  http://www.caritakip.com - Cari Takip  |  http://www.evraktakip.com - Evrak Takip  |  http://www.etasqlmobil.com - ETA SQL Mobil



Sayfayı Yazdır | Pencereyi Kapat