在这里阅读它。
我需要实现这样一个接口的变体,假设我们有很大的内存空间来管理应该有 getmem(size) 和 free(pointer to block) 函数必须确保 free(pointer to block) 可以实际释放当且仅当使用该块的所有进程都使用它完成时,内存。
我正在考虑做的是将一个Collectable
结构定义为指向块的指针,它的大小以及使用它的进程计数。然后,每当一个进程Collectable
第一次使用结构实例时,它必须显式地增加计数,并且每当进程free()
使用它时,计数就会减少。
这种方法的问题是所有进程都必须响应该接口并使其显式工作:每当将可收集指针分配给实例时,进程必须显式地包含该计数器,这不满足我,我在想也许有一种方法可以为此创建一个宏以在每个分配中隐式发生?
我正在寻找解决这个问题的方法一段时间,所以其他方法和想法会很棒......
编辑:上述方法不满足我不仅因为它看起来不太好,而且主要是因为我不能假设正在运行的进程的代码会关心更新我的计数。我需要一种方法来确保它在不更改进程代码的情况下完成......