diff options
author | chriseth <chris@ethereum.org> | 2018-03-13 22:21:38 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2018-04-04 18:37:04 +0800 |
commit | 0cbe55005de79b0f7c5c770d50c3eb87df019789 (patch) | |
tree | fc47c0c80cad0a7f70f57b5cefe9c9e7de413d76 /docs/assembly.rst | |
parent | c63efebd4517d51f29082a8d0cff814a4922243d (diff) | |
download | dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.tar dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.tar.gz dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.tar.bz2 dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.tar.lz dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.tar.xz dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.tar.zst dexon-solidity-0cbe55005de79b0f7c5c770d50c3eb87df019789.zip |
Create empty dynamic memory arrays more efficiently.
Diffstat (limited to 'docs/assembly.rst')
-rw-r--r-- | docs/assembly.rst | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/docs/assembly.rst b/docs/assembly.rst index cf9bf840..705cd1b8 100644 --- a/docs/assembly.rst +++ b/docs/assembly.rst @@ -647,6 +647,11 @@ Solidity manages memory in a very simple way: There is a "free memory pointer" at position ``0x40`` in memory. If you want to allocate memory, just use the memory from that point on and update the pointer accordingly. +The first 64 bytes of memory can be used as "scratch space" for short-term +allocation. The 32 bytes after the free memory pointer (i.e. starting at ``0x60``) +is meant to be zero permanently and is used as the initial value for +empty dynamic memory arrays. + Elements in memory arrays in Solidity always occupy multiples of 32 bytes (yes, this is even true for ``byte[]``, but not for ``bytes`` and ``string``). Multi-dimensional memory arrays are pointers to memory arrays. The length of a dynamic array is stored at the |