我在C中有这个问题,我必须实现垃圾收集器。我坚持认为我有4个功能可以完成而不确定它们是如何相互连接的。我不知道该怎么做。这就是我到目前为止所做的:
function setRadius(value) {
self.radius = value;
}
function resize(event) {
if ($(window).width() > 600) {
setRadius(.9 * Math.random() + 10);
} else {
setRadius(.9 * Math.random() + 2);
}
}
resize();
$(window).on('resize', resize);
答案 0 :(得分:1)
如果您甚至不理解这个问题,或许最好与您的教学人员交谈。为了让你从这里开始,这是一般的想法。
mygc
显然是执行GC的顶级功能。mark
来标记内存位置/对象在使用中。它还需要将该位置/对象引用的所有内存标记为正在使用(递归)。sweep
被调用以取消标记所有先前标记的内存并声明(垃圾收集)那些未标记的位置。isPtr
来确定内存位置是否是指针(而不是任何其他数据)。 mark
使用它来了解是否需要标记内存位置。所以将所有伪代码放在一起就是:
mygc()
{
loc_list = get stack extents and global variables
foreach (p in loc_list) {
if (isPtr(p)) {
mark(p)
}
}
foreach (p in heap) {
sweep(p)
}
}
很明显,很多细节都没有在psuedo代码中处理过。但它应该足以回答你原来的问题,即四个函数如何组合在一起。