When trying to load the 32 bytes of memory that follow a high offset (say 0x12345678), the RETURN and MLOAD opcodes give an out of gas error. Why is that ?


PUSH1 0x20
PUSH4 0x12345678

I would expect the result to be 0x0000...00 since the memory isn't initialized there but it appears that another operation is ran, which costs gas.

What exactly is going on here ?

1 Answer 1


Your RETURN code needs to access a very high memory index (very high in the context of Ethereum contracts), which costs too much gas. The higher the memory cell that's accessed, the more gas it costs: https://ethereum.stackexchange.com/a/62732/7598

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.