内存变量的布局(Layout in Memory)
Solidity预留了3个32字节大小的槽位:
- 0-64:哈希方法的
暂存空间(scratch space)
- 64-96:当前已分配内存大小(也称
空闲内存指针(free memory pointer)
)
暂存空间可在语句之间使用(如在内联编译时使用)
Solidity总是在空闲内存指针
所在位置创建一个新对象,且对应的内存永远不会被释放(也许未来会改变这种做法)。
有一些在Solidity中的操作需要超过64字节的临时空间,这样就会超过预留的暂存空间
。他们就将会分配到空闲内存指针
所在的地方,但由于他们自身的特点,生命周期相对较短,且指针本身不能更新,内存也许会,也许不会被清零(zerod out)
。因此,大家不应该认为空闲的内存一定已经是清零(zeroed out)
的。
处于某些特定的环境下,可以看到评论框,欢迎留言交流^_^。