这个问题的灵感来自Python
于变量存储的内存管理技术。我想用 C 语言实现类似的功能。
通常,大型运行程序中的大多数变量都有值0
和1
. 假设 100 个数据类型的变量int
具有值0
or 1
,所以我们使用100 * sizeof(int) = 400
的是内存字节。相反,我们可以将每个变量指向具有引用计数的结构,这将内存使用量减少到只有几个字节。当引用计数达到 时,该结构被解除分配0
。
struct var
{
int value;
int refCount;
}
我想要实现的是,当我定义几个int
's 时,链接列表如下:
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
时,它被取消分配。