[英]Vector memory management
对于函数中使用的所有临时向量使用一个向量类成员,从内存管理站点看起来有什么区别:
class A
{
private:
vector<Type> m_vector;
}
void fnc()
{
m_vector.clear();
m_vector.push_back();
//further operations on vector
}
并在函数内创建临时向量:
void fnc()
{
vector<Type> vector;
//further operations on vector
}
我认为第一个选项导致较少的内存碎片,因为我们正在进行一次分配并使用此区域,在第二种情况下,我们为不同函数的向量分配内存,这会导致内存碎片。
这个向量用法的优点和缺点是什么? 当我的课程在其功能中需要很多向量时,我应该使用哪一个? 从记忆管理网站看哪一个更好看?
从内存管理的角度来看,您的解决方案可能更好,因为碎片和更少的分配/解除分配但是:
简单的规则:
如果你希望向量存在直到你的类对象的生命周期使它成为类成员,否则不要。
简而言之,如果它的生命周期与对象的生命周期相关联,则应将其用作成员。
如果没有,你需要的只是本地向量。
无论第一种方法还是第二种方法更适合您的使用,Micro-Optimization都会避免使用它们,除非您的使用量足够大以至于担心避免它。
不要仅仅为了重新使用而制作成员向量。 某些东西是否是成员应该基于该类的逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.