Solidity有3种不同的内存存储:存储、内存和堆栈。网上看了很多文章,还是不明白内存和栈的区别。我的问题是:
Q1. 内存和堆栈有什么区别?
Q2。假设我在函数中定义了一个局部变量,我怎么知道这个变量是存储在内存中还是栈中呢?(只有当变量声明带有“memory”关键字时,变量才在内存中?)
感谢大家。
感谢@Yilmaz 的回复。根据你的回答,假设我们有一个这样写的函数:
function test() public {
string memory str;
int i;
}
Run Code Online (Sandbox Code Playgroud)
和str是否i同时在“内存”和“堆栈”上?
我的第三个问题是:
Q3。为什么只有数组、结构体和映射类型需要指定内存位置?为什么 Solidity 不允许我写int memory i;上面的代码?