动态分配对象内部的动态分配
Dynamic allocation inside a dynamically allocated object
在对象内部使用'new'分配内存是否有任何影响?在编译器,链接器,运行时性能或其他方面有任何优势或劣势吗?
我正在谈论的一个例子
class IntData
{
public:
IntData()
{
IntVector = new std::vector<int>();
//...
}
protected:
std::vector<int> *IntVector; //Would this be any different to static allocation if...
};
//...I know that all IntData objects will be dynamically allocated
IntData *object = new IntData();
使用
std::vector<int> IntVector;
你给自动存储到你的向量(即,如果在一个函数中,它将在堆栈空间,在一个类的成员的情况下,它取决于父对象是如何分配的。在上面的例子中:在堆上)
使用IntVector = new std::vector<int>();
你在堆上完全分配了对象,包括一些容器的内部数据(对象总是在堆上复制)。
这值得吗?
对于一小部分字节:通常没有。此外,你必须通过调用delete
来自己做内存记录。可能不是问题,但在上面的简单案例中,我认为没有理由这样做。
也与更一般的情况有关:堆栈和堆上的STL容器在堆栈/堆上创建对象?
相关文章:
- C++ 将抽象类型的动态分配对象传递给函数并存储在向量中
- 动态分配对象中的字段-动态分配更好还是静态分配更好?C++
- 如何使用每个对象的单个构造函数参数动态分配C++对象数组?
- 将动态分配对象传递到 boost::any 构造函数中
- C 删除指向动态分配对象的指针
- 有关动态分配对象的问题
- 如何删除用于动态分配对象的智能指针
- C++函数返回指向动态分配对象的指针
- 如何创建指向动态分配对象的指针向量
- 动态分配对象数组,如 int
- 复制构造动态分配对象的问题
- 在类中动态分配对象指针的2D数组
- 在C++循环中正确删除动态分配对象的位置
- 如何获取指向动态分配对象的指针的基址
- 动态分配对象数组
- 如何删除指向动态分配对象的指针数组
- 返回对动态分配对象的引用
- 动态分配对象生成器
- 如何正确管理动态分配对象的内存
- 为什么valgrind显示泄漏,即使包含动态分配对象的向量被释放