gpt4 book ai didi

c++ - 指针 vector ,其元素用新的 : what happens when assigning a new value? 初始化

转载 作者:行者123 更新时间:2023-11-30 04:18:18 27 4
gpt4 key购买 nike

我有一个这样的指针 vector :

std::vector<foo*> stuff;

我用 new foo(); 初始化每个元素:

我的问题是当我重新分配一个 vector 的元素时会发生什么,比方说

stuff[3] = new foo();

我是否在泄漏内存,我应该在此之前调用 delete[] 吗?这是我应该使用智能指针的情况吗? (到目前为止还没有)

通常我不会使用 new 但我正在学习 Qt,这就是它在示例中的完成方式。 Qt 似乎有它自己的智能指针;我应该使用其中之一吗?

谢谢。

最佳答案

是的,当 stuff 被破坏时,您会泄漏所有那些动态分配的 foo 未删除且无法访问,除非您遍历 vector 并调用 delete。

通常,当您需要一个指针 vector 时,您可以使用 std::shared_ptr

std::vector<std::shared_ptr<foo>> stuff;

stuff[3] = std::make_shared<foo>();

如果 vector 很大并且您尝试复制它(那么您可能想将它包装在另一个 shared_ptr 中),这可能会成为性能瓶颈,但是如果您只访问 vector 的元素,它会消除所有问题关于谁删除什么以及何时使用原始指针方法。

关于c++ - 指针 vector ,其元素用新的 : what happens when assigning a new value? 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499156/

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