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 | Layout of Call Data | ||||||
| ******************* | ******************* | ||||||
|  | |||||||
| @ -36,4 +36,37 @@ elements. | |||||||
|   definitely zeroed out memory area, using such a pointer non-temporarily |   definitely zeroed out memory area, using such a pointer non-temporarily | ||||||
|   without updating the free memory pointer can have unexpected results. |   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