小编Soh*_*deh的帖子

列表中double和float对象的大小是否相等?

我想知道浮动和双重对象的大小是否从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)

c++ floating-point memory-management stl list

12
推荐指数
1
解决办法
787
查看次数

标签 统计

c++ ×1

floating-point ×1

list ×1

memory-management ×1

stl ×1