這個問題的靈感來自Python
變量存儲的內存管理技術。我想用C語言實現一個類似的功能。設計變量存儲的內存塊
大型運行程序中的大多數變量通常具有值0
和1
。假設數據類型爲int
的100個變量的值爲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++
是否提供任何此類功能?
UPDATE:如果我們改變a = 9
,然後一個新的節點創建爲[9,1]
和以前的節點改爲[0,2]
。當引用計數達到0
時,它將被解除分配。
因此,這是一個數字是恆定的要求。 –
@zmbq:是的,變量不會是'int',而是指針。所以,我會在struct中包含一個新成員'datatype'。 –
你*做*實現指針就像整數一樣大,對嗎? – zmbq