If I delete the whole array (static/dynamic), then all elements of an array are set to default value. So, it means that if an array has a million elements, then I have to pay gas for setting up of million elements to zero, and likely exceed the limit of Ethereum.
However, delete in blockchain is different than delete in a memory of a machine. Nothing can be deleted from blockchain ever, and thus the only reason why delete operation may exist is just "to mark some field to be invalidated" for the purpose of a smart contract code. There is no other reason. In the case of value types (int, float, etc), it does not matter whether we just invalidate by zeroing the storage variable or adjusting its property. However, The problem comes with arrays - there is no reason to zero all the fields of an array just due to their invalidation. Instead, just the length attribute of an array should be set to zero, and index check for accessing an array added.
Am I wrong?