mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
25 lines
731 B
Solidity
25 lines
731 B
Solidity
|
contract C {
|
||
|
struct S { uint x; uint y; uint z; }
|
||
|
function memorySize() internal pure returns (uint s) {
|
||
|
assembly { s := mload(0x40) }
|
||
|
}
|
||
|
function withValue() public pure returns (uint) {
|
||
|
S memory x = S(1, 2, 3);
|
||
|
uint memorySizeBefore = memorySize();
|
||
|
S memory t = x;
|
||
|
uint memorySizeAfter = memorySize();
|
||
|
return memorySizeAfter - memorySizeBefore;
|
||
|
}
|
||
|
function withoutValue() public pure returns (uint) {
|
||
|
uint memorySizeBefore = memorySize();
|
||
|
S memory t;
|
||
|
uint memorySizeAfter = memorySize();
|
||
|
return memorySizeAfter - memorySizeBefore;
|
||
|
}
|
||
|
}
|
||
|
// ====
|
||
|
// compileViaYul: also
|
||
|
// ----
|
||
|
// withValue() -> 0x00
|
||
|
// withoutValue() -> 0x60
|