在审查我的代码时,我发现我使用了一些“丑陋”的结构,在一个名为“map”的类中,我有一个包含“data”类的向量:
std::vector<PointerToHUGEClass> vector;
指针PointerToHUGEClass就像其名称所描述的那样。 (尽管指向的对象也由map类拥有,并在构造函数中使用“new”参数创建)。目前这很好用。但是我仍然觉得这更像是一种解决方法。
我使用“PointerToHUGEClass”的唯一原因是,我希望确保该对象未从堆栈中声明。不过,在我理解allocater之前就已经做出了这个决定。现在我感觉应该由分配器来确保内存未从堆栈中声明。
我的问题:
- 我是否正确地认为分配器负责来自项目的内存管理?(并确保它是从堆栈/自由存储区/堆/任何其他地方声明的)
- std :: allocator是做什么的? - 它是从堆栈还是从堆中声明的?
- (上一个问题的后续):如果我将从堆栈中声明的项复制到数据结构中,它是否仍然在堆中声明?
再次感谢, paul23
std::vector<PointerToHUGEClass>
或者std::vector<HUGEClass*>
。感谢你的指出。(虽然这并不会改变我的问题,因为这是我已经思考了一年的一般性问题) - paul23