跳到主要内容

Memory vs Calldata

  1. memory: Typically used for function parameters and temporary variables within functions. Stored in memory and not persistent on the blockchain.

  2. calldata: Similar to memory, stored in memory and not persistent on the blockchain. The key difference is that calldata variables are immutable and commonly used for function parameters.

Below, we demonstrate how to write data using both calldata and memory

contract CalldataAndMemory {
struct Confi {
uint16 age;
string name;
string wish;
}

Confi John;
Confi Jane;

function writeToJohn(Confi calldata JohnData) external {
John = JohnData;
}

function writeToJane(Confi memory JaneData) external {
Jane = JaneData;
}
}

Recommendations for gas optimization:

🌟 In practical situations, if it's possible to use calldata, it is recommended to use calldata instead of memory.