Lua - lstring

本文介绍了Lua中字符串lstring的实现,包括数据结构和API。Lua字符串分为短字符串和长字符串,短字符串通过hash复用。数据结构包含CommonHeader、shrlen、hash等字段,API包括字符串比较、hash计算、字符串创建等功能。文章详细讨论了字符串的内存管理及hash碰撞处理策略。
摘要由CSDN通过智能技术生成

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_TLNGSTRLUA_TSHRSTR. 对短字符串进行hash后, 保存起来, 进行复用.


数据结构

/*
** Header for string value; string bytes follow the end of this structure
** (aligned according to 'UTString
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值