SORU
27 ŞUBAT 2009, Cuma


Std::vector.(clear) silme (serbest hafıza) her öğe üzerinde?

Bu kodu göz önünde bulundurun:

#include <vector>

void Example()
{
    std::vector<TCHAR*> list;
    TCHAR* pLine = new TCHAR[20];
    list.push_back(pLine);
    list.clear();    // is delete called here?
    // is delete pLine; necessary?
}

Liste yapar.(Temizle) her öğe sil diyorsun? I. e. liste önce / sonra belleği boşaltmak gerekiyor.() temiz mi?

CEVAP
27 ŞUBAT 2009, Cuma


::std vektör temizlerken içerdiği her elementin yıkıcı diyor() denir. Özellikle senin durumunda, işaretçi yok ama nesneler olarak kalır.

Akıllı işaretçiler gitmek için doğru yoldur, ama dikkatli olun. auto_ptr std kaplar kullanılamaz. ::scoped_ptr destek de yok. bir nesneye bir işaretçi yok çünkü senin durumunda işe yaramaz ama::shared_ptr artırabilir, aslında bir dizi kullanıyorsunuz. Senin sorunun çok çözümü boost::shared_array kullanmaktır.

Ama std kullanmanı öneririm::basic_string hala bir dize ile çalışmanın yararları elde ederken bellek yönetimi ile uğraşmak zorunda kalmayacağın yerine,.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chrmoe

    chrmoe

    7 Kasım 2006
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Truc Minh

    Truc Minh

    23 Ocak 2011