The short answer is you can't know what is being trashed by your overrun.

Your other variables may
- be before the array
- after the array
- not stored at all, but exist entirely in registers.

Even if you knew they were after the array, there may be unknown amounts of padding (hopefully, it would be zero on an embedded processor) between the array and other variables. So any overwrite would land on dead space.

Further, changing ANY compiler flags might change any of the above assumptions.

The short answer is to FIX the code you found by reading the code.