智能指针和缓存/内存位置

时间:2016-10-07 19:56:55

标签: c++11 pointers vector shared-ptr unique-ptr

我试图了解当地情境中的智能指针。我在S / O上看了几个关于std::vector MyObjectstd::vector智能指针(shared_ptr / unique_ptr)的问题MyObject秒。

我找不到的答案是,如果我有一个1000个智能指针向MyObject s(使用make_shared / make_unique),是对象它们本身存储在内存中的随机位置,智能指针存储在向量中的连续内存块中,还是指针和对象都存储在向量中的连续内存块中?

1 个答案:

答案 0 :(得分:0)

至少保证向量中的元素是连续存储的。这符合最近的C ++标准。

智能指针指向的对象存储在其他位置。它取决于你的对象最终会在哪里找到。

如果您有选择,将对象直接存储到向量中可能会更好(也更快)。指针会添加一个额外的间接层,这可能会降低程序的速度。