2022-02-11 · 学动漫、设计、电竞、电商、短视频、软件等
比如转换绝对索引的函数将一个可接受的索引 idx 转换为绝对索引 (即,一个不依赖栈顶在哪的值)。
1.int lua_absindex对于第一个域,o, 指的是该函数会从栈上弹出多少个元素。 第二个域,p, 指该函数会将多少个元素压栈。 (所有函数都会在弹出参数后再把结果压栈。) x|y 这种形式的域表示该函数根据具体情况可能压入(或弹出) x 或 y 个元素; 问号 '?' 表示 我们无法仅通过参数来了解该函数会弹出/压入多少元素 (比如,数量取决于栈上有些什么)。 第三个域,x, 解释了该函数是否会抛出错误: '-' 表示该函数绝对不会抛出错误; 'e' 表示该函数可能抛出错误; 'v' 表示该函数可能抛出有意义的错误。
2.Lua 状态机中使用的内存分配器函数的类型。 内存分配函数必须提供一个功能类似于 realloc 但又不完全相同的函数。 它的参数有 ud ,一个由 lua_newstate 传给它的指针; ptr ,一个指向已分配出来/将被重新分配/要释放的内存块指针; osize ,内存块原来的尺寸或是关于什么将被分配出来的代码; nsize ,新内存块的尺寸。
如果 ptr 不是 NULL, osize 是 ptr 指向的内存块的尺寸, 即这个内存块当初被分配或重分配的尺寸。
3.Lua 假定分配器函数会遵循以下行为:
当 nsize 是零时, 分配器必须和 free 行为类似并返回 NULL。
当 nsize 不是零时, 分配器必须和 realloc 行为类似。 如果分配器无法完成请求,返回 NULL。 Lua 假定在 osize >= nsize 成立的条件下, 分配器绝不会失败。
这里有一个简单的分配器函数的实现。 这个实现被放在补充库中,供 luaL_newstate 使用。
4.比如转换绝对索引的函数将一个可接受的索引 idx 转换为绝对索引 (即,一个不依赖栈顶在哪的值)。int lua_absindex
对于第一个域,o, 指的是该函数会从栈上弹出多少个元素。 第二个域,p, 指该函数会将多少个元素压栈。 (所有函数都会在弹出参数后再把结果压栈。) x|y 这种形式的域表示该函数根据具体情况可能压入(或弹出) x 或 y 个元素; 问号 '?' 表示 我们无法仅通过参数来了解该函数会弹出/压入多少元素 (比如,数量取决于栈上有些什么)。 第三个域,x, 解释了该函数是否会抛出错误: '-' 表示该函数绝对不会抛出错误; 'e' 表示该函数可能抛出错误; 'v' 表示该函数可能抛出有意义的错误。
5.Lua 状态机中使用的内存分配器函数的类型。 内存分配函数必须提供一个功能类似于 realloc 但又不完全相同的函数。 它的参数有 ud ,一个由 lua_newstate 传给它的指针; ptr ,一个指向已分配出来/将被重新分配/要释放的内存块指针; osize ,内存块原来的尺寸或是关于什么将被分配出来的代码; nsize ,新内存块的尺寸。
如果 ptr 不是 NULL, osize 是 ptr 指向的内存块的尺寸, 即这个内存块当初被分配或重分配的尺寸。
6.Lua 假定分配器函数会遵循以下行为:
当 nsize 是零时, 分配器必须和 free 行为类似并返回 NULL。
当 nsize 不是零时, 分配器必须和 realloc 行为类似。 如果分配器无法完成请求,返回 NULL。 Lua 假定在 osize >= nsize 成立的条件下, 分配器绝不会失败。
这里有一个简单的分配器函数的实现。 这个实现被放在补充库中,供 luaL_newstate 使用。