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

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • Gee Cee

    Gee Cee

    1 AĞUSTOS 2009