import{_ as a,c as t,o as e,a4 as _}from"./chunks/framework.Cy9JvDAg.js";const f=JSON.parse('{"title":"4.3 - 注册表","description":"","frontmatter":{"title":"4.3 - 注册表","footer":true,"lastUpdated":true,"outline":false},"headers":[],"relativePath":"4.3.md","filePath":"4.3.md"}'),r={name:"4.3.md"},o=_('<h2 id="_4-3-注册表" tabindex="-1">4.3 - 注册表 <a class="header-anchor" href="#_4-3-注册表" aria-label="Permalink to &quot;4.3 - 注册表&quot;">​</a></h2><p>Lua提供了<em>注册表</em>，是一个在C代码中用来存储所需Lua值的预定义表。这个注册表通常使用伪索引 LUA_REGISTRYINDEX 来访问。所有C库都可以在这个表中存储数据，但是必须注意所选择的键要与其他库区分，以避免碰撞。通常你应该使用包含库名的字符串，或者使用一个带有你代码中C对象地址的 light userdata ，亦或使用你的代码所创建的Lua对象来当作注册表的键。与变量名的约定一样，注册表中的以下划线开头后跟大写字母的字符串Lua的保留键。</p><p>注册表中的数字键被用于引用机制（参见<a href="/lua5.4-manual-zh/5.1.html#luaL_ref">luaL_ref</a>）和一些预定义值。因此，注册表中的数字键绝对不能用于其他目的。</p><p>当你创建一个新的Lua状态机，其注册表会附带一些预定义的值。这些预定义值的索引使用的整数键定义在lua.h中。定义的常量有：</p><ul><li><strong>LUA_RIDX_MAINTHREAD</strong>：状态机的Lua主线程在注册表中的索引位置。（在整个状态机中主线程一共只创建一次。）</li><li><strong>LUA_RIDX_GLOBALS</strong>：全局环境在注册表中的索引位置。</li></ul>',5),l=[o];function s(n,i,u,c,d,p){return e(),t("div",null,l)}const m=a(r,[["render",s]]);export{f as __pageData,m as default};
