如下因素代碼顯示不期望的輸出:STL Vector是否調用未分配對象的析構函數?
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;
}
執行時它顯示:
Created-1077942161
Destroyed-1077942161
Destroyed674242816
我認爲第二個「破壞」輸出不應該存在。當我不使用該向量時,結果是一個Created和一個Destroyed行如預期。這種行爲是否正常?
(這與GCC編譯FreeBSD系統上)
+1 [SSCCE](http://sscce.org/) – Flexo
要打印指針,最好將其轉換爲void指針:'std :: cout <<(void *)this << std :: endl ;'。 –
同時返回'EXIT_SUCCESS'是可選的。你可以在'main'中省略返回值,它會返回'0'(這將變成任何意味着你的平臺的「正常終止」) –