mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Differences in layout between memory and storage
- More explicit description with two examples - Moved index pointer to correct file
This commit is contained in:
parent
eb77ed080a
commit
c68efc6e03
@ -1,3 +1,6 @@
|
||||
|
||||
.. index: calldata layout
|
||||
|
||||
*******************
|
||||
Layout of Call Data
|
||||
*******************
|
||||
|
@ -36,4 +36,37 @@ elements.
|
||||
definitely zeroed out memory area, using such a pointer non-temporarily
|
||||
without updating the free memory pointer can have unexpected results.
|
||||
|
||||
.. index: calldata layout
|
||||
|
||||
Differences to Layout in Storage
|
||||
================================
|
||||
|
||||
As described above the layout in memory is different from the layout in
|
||||
:ref:`storage<storage-inplace-encoding>`. Below there are some examples.
|
||||
|
||||
Example for Difference in Arrays
|
||||
--------------------------------
|
||||
|
||||
The following array occupies 32 bytes (1 slot) in storage, but 128
|
||||
bytes (4 items with 32 bytes each) in memory.
|
||||
|
||||
::
|
||||
|
||||
uint8[4] a;
|
||||
|
||||
|
||||
|
||||
Example for Difference in Struct Layout
|
||||
---------------------------------------
|
||||
|
||||
The following struct occupies 96 bytes (3 slots of 32 bytes) in storage,
|
||||
but 128 bytes (4 items with 32 bytes each) in memory.
|
||||
|
||||
|
||||
::
|
||||
|
||||
struct S {
|
||||
uint a;
|
||||
uint b;
|
||||
uint8 c;
|
||||
uint8 d;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user