class Node
{
//some member variables.
};
std::cout<<"size of the class is "<<sizeof(Node)<<"\n";
int pm1 =peakmemory();
std::cout<<"Peak memory before loop is "<< pm1<<"\n";
for(i=0; i< nNode; ++i)
{
Node * p = new Node;
}
int pm2 =peakmemory();
std::cout<<"Peak memory after loop is "<< pm2<<"\n";
我以为pm2-pm1
近似于nNode * sizeof(Node)
。但是事实证明pm2-pm1
比nNode *sizeof(Node)
大得多。记忆去了哪里?我怀疑sizeof(Node)
不能反映正确的内存使用情况。
我已经在Windows和Linux上进行了测试。最终结论是Node * p = new Node;
将分配一个大于sizeof(Node)
的内存,其中Node
是一个类。
由于您尚未指定正在运行的平台,因此有以下几种可能性:
sizeof(Node)
的单位分配内存,例如限制它的簿记数量。实际上