gpt4 book ai didi

c++ - vector 内存管理

转载 作者:太空狗 更新时间:2023-10-29 19:39:39 29 4
gpt4 key购买 nike

从内存管理站点看,对函数中使用的所有临时 vector 使用一个 vector 类成员有什么区别:

class A
{
private:
vector<Type> m_vector;
}

void fnc()
{
m_vector.clear();
m_vector.push_back();
//further operations on vector
}

并在函数内部创建临时 vector :

void fnc()
{
vector<Type> vector;
//further operations on vector
}

我想第一个选项会导致较少的内存碎片,因为我们正在进行一次分配并使用该区域,而在第二种情况下,我们会为不同函数中的 vector 分配内存,从而导致内存碎片。

这种 vector 用法的优缺点是什么?当我的类在其函数中需要很多 vector 时,我应该使用哪一个?从内存管理网站上看,哪个更好看?

最佳答案

从内存管理的角度来看,您的解决方案可能更好,因为碎片化和更少的分配/取消分配但是:

  • 在多线程环境中线程安全性降低 - 您可能需要在每个方法中围绕 vector 的使用实现一些同步
  • 你需要记住在每个方法中清除 vector 的内容

关于c++ - vector 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880544/

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