Why does MLOAD cause memory expansion?

In EVM MLOAD outside of the current memory range causes memory to expand, and charges the user.

Does anyone know why was this choice made ? It seems that EVM implementation could simply return zero and not expand memory.

Operating systems in similar situations do not allocate physical memory unless a nonzero write happens.

1 Like