【发布时间】:2017-09-03 07:56:45
【问题描述】:
我有一个数据结构,它是结构的std::vector,其中每个结构还包含一个std::vector。我想提前计算出表示整个结构所需的内存上限。为此,在测试中,我想计算最终结构的内存需求并将其与我的估计进行比较。
为此,我使用以下代码:
struct SequenceInfo {
unsigned long num1;
unsigned long num2;
unsigned long vectorLength;
std::vector<unsigned long> values;
};
// A vector of sequence data to represent all data
typedef std::vector<SequenceInfo> SequenceInfoVec;
void foo(SequenceInfoVec& vec)
{
getVec(vec);
std::size_t actualSize = sizeof(SequenceInfoVec);
for (SequenceInfoVec::iterator it1 = vec.begin(); it1 != vec.end(); ++it1)
{
actualSize += sizeof(SequenceInfo) +
sizeof((*it1).values[0]) * (*it1).values.size();
}
cout << "memory size of vec is: " << actualSize << endl;
}
这是计算数据结构的内存需求的正确方法吗(忽略内存分配的小 OS 开销)?
【问题讨论】: