folowing kod bir çıkış beklenmemektedir gösterir:STL Vector, tahsis edilmemiş bir nesnenin yıkıcısını mı arıyor?
class test
{
public:
test()
{
std::cout << "Created" << (long)this << std::endl;
}
~test()
{
std::cout << "Destroyed" << (long)this << std::endl;
}
};
int main(int argc, char** argv)
{
std::vector<test> v;
test t;
v.push_back(t);
return EXIT_SUCCESS;
}
gösterir çalıştırıldığında:
Created-1077942161
Destroyed-1077942161
Destroyed674242816
Ben ikinci "Tahrip" çıkışı olmamalıdır düşünüyorum. Vektörü kullanmadığımda, sonuç beklendiği gibi bir Oluşturulmuş ve bir Yokedilmiş satırdır. Bu davranış normal mi?
olması gerektiği gibi
+1 [SSCCE] için (http://sscce.org/) – Flexo
İşaretçileri yazdırmak için en iyi işaretçiyi yayınlamak en iyisidir: std :: cout << (void *) bu << std :: endl ; '. –
Ayrıca 'EXIT_SUCCESS' iadesi de isteğe bağlıdır. Geri dönüş değerini "main" olarak iptal edebilirsiniz, 0 '(sizin platformunuz için hangi sayıya" normal sonlandırma "anlamına gelir) dönecektir –