我想知道浮动和双重对象的大小是否从std :: list的角度来看是相等的?
我在std :: list中分配了500万个Real(别名float或double)对象,并使用Valgrind监视内存使用情况.
在这两种情况下,使用的内存是相等的,尽管'double'(8字节)的大小是一个'float'对象(4字节)的大小的两倍!
顺便说一句,当我使用'new'运算符为相同数量的对象分配内存时,double数组的内存使用量是float数组的两倍,这似乎是正确的.我也期待使用std :: list.
我在Fedora 16.x86_64上使用gcc 4.6.2.
有任何想法,以帮助我了解这个谜.
这是我为测试编写的代码
#include <iostream>
#include <list>
typedef double Real;
int main(int argc, char** argv)
{
std::list<Real> pts;
int k;
int npts = 5000000; // 5 mil
std::cout << "sizeof(Real): " << sizeof(Real) << std::endl;
for(k=0; k < npts;++k)
pts.push_back(1.0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我定义Real < - 双重Valgrind输出
==15335== Memcheck, a memory error detector
==15335== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==15335== Using Valgrind-3.6.1 …Run Code Online (Sandbox Code Playgroud)