简介:在前面我们已经讲过
Solidity语言的一些语法内容,在矩阵元JUICE开放平台的JIDE开发时,一定要注意Layout in Memory和Layout of State Variables in Storage,即内存变量的布局和状态变量的存储模型。
内存变量的布局(
Layout in Memory)
Solidity预留了3个32字节大小的槽位:
-
0-64:哈希方法的
暂存空间
(scratch space)
-
64-96:当前已分配内存大小(也称
空闲内存指针
(free memory pointer)
)
暂存空间可在语句之间使用(如在内联编译时使用)
Solidity总是在
空闲内存指针
所在位置创建一个新对象,且对应的内存永远不会被释放
(也许未来会改变这种做法)。
有一些在
Solidity中的操作需要超过64字节的临时空间,这样就会超过预留的
暂存空间
。他们就将会分配到
空闲内存指针
所在的地方,但由于他们自身的特点,生命周期相对较短,且指针本身不能更新,内存也许会,也许不会被
清零
(zerod out)
。因此,大家不应该认为空闲的内存一定已经是