import{_ as a,c as t,o as l,a4 as e}from"./chunks/framework.Cy9JvDAg.js";const f=JSON.parse('{"title":"4.1.3 - 字符串指针","description":"","frontmatter":{"title":"4.1.3 - 字符串指针","footer":true,"lastUpdated":true,"outline":false},"headers":[],"relativePath":"4.1.3.md","filePath":"4.1.3.md"}'),u={name:"4.1.3.md"},_=e('<h3 id="_4-1-3-字符串指针" tabindex="-1">4.1.3 - 字符串指针 <a class="header-anchor" href="#_4-1-3-字符串指针" aria-label="Permalink to &quot;4.1.3 - 字符串指针&quot;">​</a></h3><p>API中的有些函数会在栈中返回一个指向Lua字符串的指针（const char*）。（参见辅助库中的<a href="/lua5.4-manual-zh/4.6.html#lua_pushfstring">lua_pushfstring</a>、<a href="/lua5.4-manual-zh/4.6.html#lua_pushlstring">lua_pushlstring</a>、<a href="/lua5.4-manual-zh/4.6.html#lua_pushstring">lua_pushstring</a>和<a href="/lua5.4-manual-zh/4.6.html#lua_tolstring">lua_tolstring</a>。）</p><p>通常来说，Lua的GC可以释放或移动内部内存和已失效的内部字符串指针。为了安全地使用这些指针，只要字符串值的索引没有从栈中移除，那么API就会保证在所有栈内索引此字符串的指针有效。（尽管它可以移动到另一个索引上。）当索引是一个伪索引（引用的是一个上值）时，只要相关调用仍然活跃且相关上值没有被改动，其指针就是有效的。</p><p>调试接口中有些函数也可以返回字符串指针，它们分别是<a href="/lua5.4-manual-zh/4.7.html#lua_getlocal">lua_getlocal</a>、<a href="/lua5.4-manual-zh/4.7.html#lua_getupvalue">lua_getupvalue</a>以及<a href="/lua5.4-manual-zh/4.7.html#lua_setupvalue">lua_setupvalue</a>。对于这些函数，只要这个函数调用仍在活跃且所给（如果有）闭包还在栈中，那么其指针保证有效。</p><p>在这些保证之外的情况下，GC可以自由决定内部字符串的指针是否有效。</p>',5),r=[_];function s(h,n,o,p,i,c){return l(),t("div",null,r)}const d=a(u,[["render",s]]);export{f as __pageData,d as default};
