【发布时间】:2013-01-09 07:21:35
【问题描述】:
这个问题的灵感来自Python 用于变量存储的内存管理技术。我想用 C 语言实现一个类似的功能。
大型运行程序中的大多数变量通常具有值0 和1。假设 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 时,将被释放。
【问题讨论】: