Solidity存储关键词memory含义?

在以太坊Solidity中关键词memory的含义或者说作用(purpose)是什么?
在查看智能合约时,有时数组arrays用memory来声明,有时不是。有什么区别不同吗?

以太坊开发语言solidity中的memory

没有memory这个关键字,solidity在存储storage中声明变量。

领导Solidity开发的chriseth这么说:”你可以把存储storage看作是一个大的数组,它有一个虚拟结构,一个在运行时不能改变的结构——它是由你的智能合约中的状态变量决定的”。

也就是说,在基于智能合约级别的变量声明在智能合约创建时,存储结构是在stone中设置的,并且不能被将来的方法调用和更改。但是,存储的内容可以用state variables调用来改变。这样的调用改变了state,这就是为什么合约级变量被称为状态变量。因此,在合约级别声明的变量uint8存储变量可以更改为uint8(0~255)的任何有效值,但是uint8类型的值的slot槽位将始终存在。

如果在没有memory关键字的函数中声明变量,那么solidity将尝试使用当前已经编译好的存储结构,但会产生意想不到的结果。memory告诉solidity,以便在方法运行时为变量创建一块空间,保证其大小和结构,这样将来就可以在该方法中使用。

memory不能在合约级别使用。只有方法

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值