指向指针向量的指针的内存消耗

squ*_*boo 0 c++ pointers

我知道指针的大小是固定的(不是它指向的数据的大小).现在考虑到这一点,假设我在全局范围内有一个数据向量,并且我声明了指向一些/所有全局数据的指针向量的指针,这将额外使用多少内存(RAM)?我在这里完全不知所措,肯定会感谢一些想法/建议.我希望额外的内存消耗只是向量的大小乘以指针的固定大小(比如8字节),而不管数据的复杂程度如何; 因为它指向的数据存在于全球范围内(即,没有分配新数据;希望我已清楚地解释了我的想法).

一些表达我的问题的伪代码看起来像:

std::vector<data> global_data;
std::vector<data*>* my_data = new std::vector<data*>();  //-Is this even valid? 
//-Now populate the vector with pointers to data in global_data
for(int i=0; i<global_data.size(); ++i) {
   my_data->push_back(&global_data[i]);
}
Run Code Online (Sandbox Code Playgroud)

然后我的问题是RAM中有多少额外的内存(即,超过已经使用的内存来自创建global_data)被m_data用尽了

Ker*_* SB 6

my_data将占用sizeof(std::vector<data*>*)字节,并且不会超过sizeof(void*).

*my_data将占据sizeof(std::vector<data*>),可以少3 * sizeof(data**),即不多于3 * sizeof(void*).

*my_data将管理sizeof(data*) * my_data->capacity()动态内存的字节.


我严重怀疑这些信息在实践中是否有用.