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.