问一个 lua 的问题?

2018-02-27 11:12:01 +08:00
 mentalidade

看到一个 lua 代码: local RANDOM_BOUNDARY = sub(tostring({}), 10) 使用 RANDOM_BOUNDARY 作为 multipart/data 的 boundary, 打印一下,看起来仅仅最后几位是随机的,请问什么原理?

Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> do
>> local a = tostring({})
>> local b = tostring({})
>> local c = tostring({})
>> print(a)
>> print(b)
>> print(c)
>> end
table: 0x7f8224f00dd0
table: 0x7f8224f012e0
table: 0x7f8224f01380
> 
> 
> do
>> local a = tostring({})
>> local b = tostring({})
>> local c = tostring({})
>> print(a)
>> print(b)
>> print(c)
>> end
table: 0x7f8224c07190
table: 0x7f8224c07230
table: 0x7f8224c072d0
973 次点击
所在节点    问与答
2 条回复
newtype0092
2018-02-27 11:47:52 +08:00
这是内存地址啊,不停的创建空 table,然后取地址,都是连续的哪里随机了。
ai277014717
2018-02-27 12:27:00 +08:00
内存地址,正常来说你会发现 c-b 应该等于 b-a,一个 table 的内存大小应该就是这个差值乘以一个常数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/433034

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX