lstring
lstring实现了Lua对于字符串的管理.
字符串对象的结构体声明在lobject中. Lua中的字符串可以是C语言的'\0'
结尾的连续字符数组, 也可以单纯是一块连续内存的内容, 包含任何字节内容.
#define LUA_TSTRING 4
/* Variant tags for strings */
#define LUA_TSHRSTR (LUA_TSTRING | (0 << 4)) /* short strings */
#define LUA_TLNGSTR (LUA_TSTRING | (1 << 4)) /* long strings */
在Lua中, 字符串根据长度LUAI_MAXSHORTLEN
( 默认40) 区分长短字符串, 分为LUA_TLNGSTR
和LUA_TSHRSTR
. 对短字符串进行hash后, 保存起来, 进行复用.
数据结构
/*
** Header for string value; string bytes follow the end of this structure
** (aligned according to 'UTString