小编Sup*_*alb的帖子

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;
}
Run Code Online (Sandbox Code Playgroud)

执行时显示:

Created-1077942161
Destroyed-1077942161
Destroyed674242816
Run Code Online (Sandbox Code Playgroud)

我认为第二个"被摧毁"的输出不应该存在.当我不使用向量时,结果是一个Created和一个Destroyed行按预期方式.这种行为是否正常?

(这是在FreeBSD系统上使用GCC编译的)

c++ stl vector

16
推荐指数
2
解决办法
713
查看次数

标签 统计

c++ ×1

stl ×1

vector ×1