c++中使用vector和使用new、delete有什么区别?

问题描述 投票:0回答:2

我想问一下C++中使用vector和使用new、delete的区别。 new、delete和malloc、free都用于动态内存分配。

那么我们为什么不直接使用C++中自动为我们分配内存的向量呢?

什么情况下需要使用new、delete手动分配内存而不是直接使用vector?

我希望得到有关此事的一些指导。谢谢。

也许我误解了什么。

vector dynamic-memory-allocation new-operator
2个回答
0
投票

那么我们为什么不直接使用C++中自动为我们分配内存的向量呢?

绝大多数时候我们都是这么做的。我们不使用

vector
的一小部分时间,我们正在使用其他容器。

什么情况下需要使用new、delete手动分配内存而不是直接使用vector?

从来没有。


-1
投票

在具有严格性能和内存限制的环境中(例如嵌入式系统),使用 new 和 delete 进行手动内存管理可提供对内存分配的精确控制。与 std::vector 不同的是,std::vector 会动态调整内存大小,并且可能通过简单调用 push_back 来耗尽可用内存,new 和 delete 提供确定性的内存使用。

此外,这对于时间敏感的应用程序至关重要,因为每一毫秒都很重要。另一件事是,在基于 C 的生态系统(例如 Linux 内核和模块)中,std::vector 不可用,new 和 delete 对于有效的内存利用仍然是不可或缺的。尽管 std::vector 很方便,但在需要严格的资源管理和最佳性能的环境中,new 和 delete 提供的直接控制被证明是非常宝贵的。

© www.soinside.com 2019 - 2024. All rights reserved.