You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity中用new初始化的状态变量数组存储位置疑问

问题解答:该数组存储在Storage中

你的疑问核心是混淆了「new创建数组的场景」和「变量本身的存储类型」,具体解释如下:

  • 状态变量的存储位置是固定的:你代码里的uint[] public array是合约的状态变量,Solidity规定状态变量默认且仅能存储在storage中——这是变量类型的属性,和初始化方式无关。
  • 初始化时的new uint[](3)只是临时赋值:这里的new uint[](3)确实会创建一个memory中的临时数组,但它的作用是给状态变量array提供初始值,合约部署完成后,这个临时memory数组会被销毁,真正持久化保存的是storage里的array。
  • 对比函数内的场景:如果是在函数内部写uint[] memory arr = new uint[](3),这个arr才是真正存储在memory中的临时数组,函数执行结束后就会被释放,不会持久化。

内容的提问来源于stack exchange,提问作者Huowuge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:00:54