我知道指针的大小是固定的(不是它指向的数据的大小)。鉴于此,假设我在全局范围内有一个数据 vector ,并且我声明了一个指向指向部分/所有全局数据的指针 vector 的指针,这将额外使用多少内存(RAM)?我在这里完全不知所措,当然会很感激一些想法/建议。我希望额外的内存消耗只是 vector 大小乘以指针的固定大小(比如 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]);
}
那么我的问题是 RAM 中有多少额外的内存(即超过创建 global_data 时已经使用的内存)被 m_data 用完了?
最佳答案
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()
字节的动态内存。
我非常怀疑这些信息在实践中是否有用。
关于c++ - 指向指针 vector 的指针的内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796600/