Вызывает ли 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
Я думаю, что второй "Уничтоженный" выход не должен быть там. Когда я не использую вектор, результатом будет одна Созданная и одна Разрушенная линия, как и ожидалось. Это нормальное поведение?
(Это скомпилировано с GCC в системе FreeBSD)