我知道指针的大小是固定的(不是它指向的数据的大小).现在考虑到这一点,假设我在全局范围内有一个数据向量,并且我声明了指向一些/所有全局数据的指针向量的指针,这将额外使用多少内存(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用尽了?
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()动态内存的字节.
我严重怀疑这些信息在实践中是否有用.
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |