![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lua
日月光辉_
这个作者很懒,什么都没留下…
展开
-
Lua表
Lua表表的数据结构:数组+哈希表(链地址法)typedef struct Table { CommonHeader; lu_byte flags; /* 1<<p means tagmethod(p) is not present */ lu_byte lsizenode; /* log2 of size of 'node' array */ unsigned int alimit; /* "limit" of 'array' array */ TValue *a原创 2020-11-18 15:56:54 · 402 阅读 · 0 评论 -
Lua字符串
Lua字符串数据结构:lobject.h存储结构:lstate.h短字符串(LUAI_MAXSHORTLEN 40)保存lua_state中的strt表中,即stringtable。如果创建一个新的短字符串,首先会从strt中查找是否含有该字符串,有就马上返回,没有就创建一个新的字符串对象存入哈希表中,采用链地址法;长字符串不保存到表里,每次创建新的对象返回。创建字符串:lstring.c创建短字符串:lstring.c创建长字符串:lstring.c创建字符串对象:总结.原创 2020-11-17 11:57:27 · 468 阅读 · 0 评论 -
Lua内存管理器
Lua内存管理lua允许用户自定义内存管理器,也可以使用默认的内存管理器l_allocl_alloc函数实际是调用C标准库中的realloc函数进行分配内存。分配内存使用luaM_realloc_函数,释放内存使用luaM_free_函数,都是调用l_alloc,只是nsize的值不一样,为0时释放内存ud:用户可以在自定义内存管理器中,设置内存管理器在不同的堆上,避免线程安全问题,可以让内存管理器工作更高效ptr:返回分配的内存指针,如果nsize为0,返回NULLosize:给出内存块的原始原创 2020-11-16 16:11:51 · 698 阅读 · 0 评论 -
Lua:pair与ipairs的实现
Lua:pair与ipairs的实现tbl = {1, 2, 3, 4}local ipairsIter = function(tbl, index) index = index + 1 local value = tbl[index] if value then return index, value endendlocal ipairsOpt = function(tbl) return ipairsIter, tbl, 0endfor k, v in原创 2020-11-05 16:56:43 · 523 阅读 · 0 评论 -
Lua实现基本的排序算法
洗牌算法function randomSort(nums) local n=#nums for i=1,n do local k=math.random(1,n) nums[i],nums[k]=nums[k],nums[i] endend选择排序function selectSort(numbers) local n=#numbers for i=1,n d...原创 2019-11-19 14:53:02 · 488 阅读 · 0 评论