智能合约从入门到精通:Solidity语法之内存变量的布局和状态变量的存储模型

  • Post author:
  • Post category:solidity



简介:在前面我们已经讲过

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)


。因此,大家不应该认为空闲的内存一定已经是




版权声明:本文为shjuzhen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。