前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Solidity中的memory 和 storage

Solidity中的memory 和 storage

作者头像
用户1408045
发布2018-05-17 11:56:21
6590
发布2018-05-17 11:56:21
举报
文章被收录于专栏:汇智网教程汇智网教程

如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程:

如果在声明合约变量时没有使用memory关键字,Solidity会尝试在storage中存储这个变量。

storage是什么

根据Solidity首席工程师Chriseth的说法:“你可以把storage想像成一个大数组,它有自己的结构,这个结构是由你的合约中的状态变量所决定的,因此在运行时不能改变”

这就是说,storage的结构是在合约部署创建时,根据你的合约中状态变量的声明,就固定下来了,并且不能在将来的合约方法调用中改变这个结构。但是,storage中的内容是可以通过交易来改变的。这些交易调用因此将修改合约的状态,这也是为什么合约中的变量被称为状态变量的原因。因此在合约层面声明的一个uint8类型的storage变量, 它的值可以修改为任何0-255之间的有效uint8值,但是该变量在storage结构中的位置始终不会变化。

函数中的变量

如果你在合约函数中声明变量时没有使用memory关键字,那么solidity将会尝试使用storage结构,目前来讲,这样做可以通过编译,但是可能导致不可预期的结果。memory关键字告诉solidity应当在该函数运行时为变量创建一块空间,使其大小和结构满足函数运行的需要。

在合约层面你不能为变量应用memory关键字。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • storage是什么
  • 函数中的变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档