Car*_*dez 1 c++ memory smart-pointers stdvector
我有一个std::shared_ptr声明的deque有一个基类的deque(我们称之为Polygon),但我存储指向派生对象的指针(例如Triangle).我现在正在考虑将数据结构更改std::vector为使用向量确保相邻内存的事实但我在这里有几个问题:
1)即使物体尺寸不同,这是否可行?或者可能发生由于派生对象大于它们将在内存中重叠的基础对象?
2)存储std::shared_ptr我不会在内存中将它们完全放在一起只是指针是真的吗?还是我错了?
谢谢
即使物体尺寸不同,这是否可行?或者可能发生由于派生对象大于它们将在内存中重叠的基础对象?
这可以.即使Derived可能比Base你实际上没有存储在矢量中的那些更大.您正在存储指向它们的指针,并且指针始终具有相同的大小.
存储
std::shared_ptr我不会在内存中将它们放在一起只是指针是真的吗?还是我错了?
正确,指针将在向量中彼此相邻,但它们指向的可能是内存中的任何位置.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |