看到一个 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
1
newtype0092 2018-02-27 11:47:52 +08:00 1
这是内存地址啊,不停的创建空 table,然后取地址,都是连续的哪里随机了。
|
2
ai277014717 2018-02-27 12:27:00 +08:00 1
内存地址,正常来说你会发现 c-b 应该等于 b-a,一个 table 的内存大小应该就是这个差值乘以一个常数。
|