我正在初始化数百万个属于以下类型的类
template<class T>
struct node
{
//some functions
private:
T m_data_1;
T m_data_2;
T m_data_3;
node* m_parent_1;
node* m_parent_2;
node* m_child;
}
模板的目的是使用户能够选择float
或double
精确,其想法是node<float>
占用更少的内存(RAM)。
但是,当我切换double
到float
我的程序的内存占用时,它并没有像我预期的那样减少。我有两个问题,
编译器/操作系统是否有可能保留比我的浮点数所需的更多空间(甚至将它们存储为双精度)。如果是这样,我该如何阻止这种情况发生 - 我在 64 位机器上使用带有 g++ 的 linux。
是否有一个工具可以让我确定所有不同类使用的内存量?(即某种内存分析) - 以确保内存没有被我没有想到的其他地方吞噬。