【问题标题】:Is it possible to allocate vectors in the heap but accessing via reference?是否可以在堆中分配向量但通过引用访问?
【发布时间】:2020-02-28 23:10:44
【问题描述】:

我有一个程序使用大量存储空间 (2.5MB),我使用 std::vector 将其全部存储在堆栈中。

  1. 将其保存在堆中不是一个好主意吗?
  2. 如果是这种情况,当存储的类型是 vector*(因为它们是用 new 分配的)时,是否可以使用引用 vector& 的函数?

【问题讨论】:

标签: c++ pointers memory reference


【解决方案1】:
  1. std::array 不同,std::vector 不会在自身内部存储元素,它总是在堆上分配存储空间(除非您使用自定义分配器)。您的 2.5 MB 进入堆,只有 std::vector 本身(几个指针和大小,通常为 12/24 字节)在堆栈上分配。

  2. 你可以做到的:

    void foo(std::vector<T>&);
    
    std::vector<T>* vec = ...;
    foo(*vec);
    

编辑。我找到了duplicate question。投票关闭这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2011-10-21
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多