下面的代码显示了不期望的输出:
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;
}
Run Code Online (Sandbox Code Playgroud)
执行时显示:
Created-1077942161
Destroyed-1077942161
Destroyed674242816
Run Code Online (Sandbox Code Playgroud)
我认为第二个"被摧毁"的输出不应该存在.当我不使用向量时,结果是一个Created和一个Destroyed行按预期方式.这种行为是否正常?
(这是在FreeBSD系统上使用GCC编译的)