Pythonこの質問は、変数ストレージのメモリ管理手法に触発されています。C言語で同様の機能を実装したいと考えています。
一般に、大規模な実行中のプログラムのほとんどの変数には、値0と1. datatype の 100 個の変数がint値0またはを持っていると仮定すると、メモリのバイトを1使用しています。100 * sizeof(int) = 400代わりに、参照カウントを使用して各変数を次の構造体にポイントすることができます。これにより、メモリ使用量が数バイトに削減されます。参照カウントが に達すると、構造体の割り当てが解除されます0。
struct var
{
int value;
int refCount;
}
私が達成したいのは、複数intの を定義すると、リンクされたリストは次のようになるということです。
void foo()
{
int a = 0, b = 0, c = 0;
int i = 1, j = 1;
int x = 7;
int p = 5, q = 5;
}
結果は次のリンクリストになります
[Head] <-> [0,3] <-> [1,2] <-> [7,1] <-> [5,2] <-> [Tail]
ここaで、ノードbをcポイントします[0,3]。iノードなどをj指します[1,2]。さて、変数のメモリ割り当てをオーバーライドCし、上記のように独自のアルゴリズムを実装するにはどうすればよいでしょうか? C++そのような機能はありますか?
更新: 変更するa = 9と、新しいノードが として作成され[9,1]、前のノードは に変更され[0,2]ます。参照カウントが に達する0と、割り当てが解除されます。