The debug version has bounds checking built in. The release version does not.
The code Local i:Float[]
creates an array object and assigns it with the 'empty array' (an internal global empty array object - this exists as a static object in memory).
Now, if you read values from this array they are indexed from this empty array's address... anything which follows it in memory may or may not be a valid address for the process. If it is, you get the value at the address - if not you will get an access violation exception.
The code Local i:Float[]
creates an array object and assigns it with the 'empty array' (an internal global empty array object - this exists as a static object in memory).
Now, if you read values from this array they are indexed from this empty array's address... anything which follows it in memory may or may not be a valid address for the process. If it is, you get the value at the address - if not you will get an access violation exception.