lua 垃圾回收标记函数 reallymarkobject

本文深入探讨了Lua的垃圾回收机制,特别是reallymarkobject函数。该函数在三色标记法中起到关键作用,将对象从白色标记为灰色或黑色,确保可达性。函数针对不同类型的对象(如字符串、userdata、自由变量、函数、表、线程和原型)进行特定的标记操作,确保正确追踪引用关系。在标记过程中,灰链用于暂存已处理但仍有子引用待处理的对象。
摘要由CSDN通过智能技术生成

reallymarkobject 函数如下(省略旁路代码):

static void reallymarkobject (global_State *g, GCObject *o) {
  white2gray(o);
  switch (o->gch.tt) {
    case LUA_TSTRING: {
      return;
    }
    case LUA_TUSERDATA: {
      Table *mt = gco2u(o)->metatable;
      gray2black(o);  /* udata are never gray */
      if (mt) markobject(g, mt);
      markobject(g, gco2u(o)->env);
      return;
    }
    case 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值