for(int i = 0; ; i++)
When does your loop end?!?!? Your second condition in for (the testing expression) is evaluated as true (at least as long as i<4). You need
for(int i = 0; i < 4 ; i++)
Otherwise it may break anytime after i>=4, but not before, since all components of a are non zero for i<4 (a[i] = i + 1;), and after i==4 you have undefined behaviour as you didn’t allocate enough memory for a.
Also, main should return int according to the C++ standard.
PS: For a vast majority of simple examples, most of the time you don’t even need a debugger, just simulate in your head, or on a piece of paper, what the program is doing, line by line, and you’ll catch the error.
8
solved Array has more values than expected