gpt4 book ai didi

c++ - std::vector::pop_back 是否将其中对象的指针设置为 nullptr?

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:30 27 4
gpt4 key购买 nike

是否 std::vector::pop_back将其中对象的指针设置为nullptr还是只是删除对象?

我看到我的 vector 的大小减小了,所以对象显然被删除了,但我想知道指针是否设置为 nullptr还是我必须手动执行?

编辑:我根据包含指针的 vector 问了这个问题。示例:vector<Bitmap*> .

最佳答案

逻辑上,弹出对象的“析构函数”被调用。但是请注意,对于整数类型(指针是整数类型),“析构函数”是空操作。

这意味着:

在这里Thing::~Thing()将被称为:

std::vector<Thing> things;
things.emplace_back({});
things.pop_back();

这里什么都不会被调用,你会发生资源泄漏

std::vector<Thing*> things;
things.emplace_back(new Thing{});
things.pop_back();

在这里std::unique_ptr<Thing>::~std::unique_ptr<Thing>()将被调用,你不会有资源泄漏

std::vector<std::unique_ptr<Thing>> things;
things.emplace_back(std::make_unique<Thing>());
things.pop_back();

关于c++ - std::vector::pop_back 是否将其中对象的指针设置为 nullptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com