堆还是堆栈用于创建对象?
Heap or stack for creating objects?
我有这个程序,它可以创建"计算机组件"并将其存储在向量中并将对象写入文件。 如果我在堆栈上创建对象并将内存地址传递给向量,则会出现错误 如果我在堆上创建对象并将指针传递给向量,它工作得很好"组件是一个 absract 基类"和"CPU 是组件的派生类" 有人可以解释为什么会这样吗?
vector<Component*>components;
CPU x;
CPU*y = new CPU();
components.push_back(&x) // results in debug error
components.push_back(y) // works fine.
writeTofile(components);
通过这样做
CPU x;
components.push_back(&x);
您在堆栈上创建一个本地对象,并将其地址推送到向量。当函数超出范围时,您的本地对象不再处于活动状态,并且它在向量中的地址无效。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 使用unique_ptr创建对象
- 内存用于在函数内创建对象?
- 用于创建对象的 consexpr
- 引用在用于创建对象时更改值
- (C )正在创建专门用于处理所有其他自定义对象的类/对象一种处理项目的正确方法
- 如何设计用于从班级家族创建对象的配置类
- 使用构造函数初始化对象数组,该构造函数接受用于创建对象的参数
- 用于从工厂类创建对象名称的未定义引用
- 不能创建对象,构造函数错误(用于对象初始化)
- 对象的析构函数是否释放用于创建对象的指针所指向的内存?