是否可以在堆中分配向量,但通过引用进行访问

Is it possible to allocate vectors in the heap but accessing via reference?

本文关键字:引用 访问 向量 分配 是否      更新时间:2023-10-16

我有一个程序使用了相当多的存储空间(2.5MB(,我使用std::vector将其全部存储在堆栈中。

  1. 将其保存在堆中是个好主意吗
  2. 如果是这样的话,可以使用引用向量&当存储的类型是向量*时(因为它们被分配了new(
  1. std::array不同,std::vector本身不存储元素,它总是在堆上分配存储(除非使用自定义分配器(。您的2.5MB进入堆,堆栈上只分配了std::vector本身(通常是几个指针和12/24字节的大小(。

  2. 你可以做到:

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

编辑我发现一个重复的问题。投票决定结束这场比赛。