Пока вы находитесь в пределах выделенного диапазона для вашего приложения, вы можете использовать указатели / адреса в любом месте. продолжайте идти достаточно далеко, и вы либо погасите свою программу, либо попадете на край выделенной памяти и получите какой-то сбой защиты. Проверка во время выполнения обходится дорого, в любом случае не хотелось бы этого.
поменяйте местами две переменные
char testarray[10];
char size = 0;
и посмотри, что произойдет, когда ты запустишь его ...
А затем сделайте это:
char size = 0;
char testarray[10];
char stuff[10];
перед тем, как вы начнете добавлять вещи в testarray, инициализируйте вещи, а затем, выполнив вашу вещь, распечатайте массив stuff []. Вы должны увидеть ваше переполнение. В C это хорошее правило, чтобы сначала поместить переменные, не являющиеся массивами, в список назначений, а массив или массивы последними, у вас больше шансов на отладку.