c++ - 类私有(private)成员 C++ 的动态内存分配与 std::vector

标签 c++ vector heap-memory

在学习 c++ 时,我通常(非常经常)遇到以下建议:“尽可能多地避免动态内存分配;使用 std::vectors 代替,因为它们会为您处理”。

所以我的问题是:我什么时候必须使用动态内存分配?使用 std::vector,我完成的所有练习(我只是初学者)都容易得多;尽管如此,我的讲师还是强制我们对简单类(如矩阵、几何 vector 等)使用动态内存,并在析构函数中使用 delete[]

到目前为止,我为 new;delete[]; 找到的唯一优势(或者至少我告诉自己的是为了觉得值得使用动态内存)是使用移动复制并移 Action 业。

最佳答案

std::vector 还在幕后进行动态内存分配(通过使用 new 运算符)。 还为 std::vector 定义了复制和移动赋值,如您所见 here ,因此如果您手动操作,则不会增加速度。

您的问题可能是指什么时候应该手动分配内存(通过显式使用newdelete),而不是依赖另一个类(例如 vector )为您完成。

“现代 C++”对这个问题的回答是从不手动进行内存管理。 如果一个 std::vector 完成了这项工作,那么就使用它。如果需要分配单个项目,则使用 std::unique_ptr .

关于c++ - 类私有(private)成员 C++ 的动态内存分配与 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023996/

相关文章:

c++ - 向上转换时的隐式转换与 static_cast

c++ - overlapped vector::insert 的行为

java - 为什么java没有直接的内存管理工具?

c++ - C++中指向对象/对象的指针的堆内存分配

Java堆增长

c++ - std::async 指定线程的模拟

c++ - 调试断言失败错误

c++ - 如何枚举 POSIX/c c++ 目录中的所有文件?

唯一元素 vector 的 C++ 模板函数

c++ - 如何检查字符串 vector 中字符的所有邻居