次のタイプの何百万ものクラスを初期化しています
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
テンプレートの目的は、ユーザーが精度を選択できるようにすることです。これは、使用するメモリ (RAM) が少なくなるdouble
という考えによるものです。node<float>
double
ただし、 からに切り替えてfloat
も、プログラムのメモリ フットプリントが期待どおりに減少しません。質問が 2 つあります。
コンパイラ/オペレーティング システムが、float に必要なスペースよりも多くのスペースを予約している可能性はありますか (または double として格納することさえあります)。もしそうなら、どうすればこれを止めることができますか - 私はg ++を搭載した64ビットマシンでLinuxを使用しています。
すべての異なるクラスで使用されているメモリの量を判断できるツールはありますか? (つまり、ある種のメモリプロファイリング)-メモリが、私が考えていなかった他の場所でグブリングされていないことを確認するため。