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
と、割り当てが解除されます。