Ну, переполнение буфера не было бы вызвано слишком большим значением для HUGE_NUMBER настолько, насколько оно слишком мало по сравнению с тем, что было записано в него (запись в индекс HUGE_NUMBER или выше, и вы переполнили буфер).
Кроме того, это будет зависеть от машины. Конечно, есть системы, которые могут обрабатывать несколько миллионов в куче и около миллиона в стеке (в зависимости от других нагрузок), но есть также и такие, которые не могут обрабатывать более нескольких сотен (небольшие встроенные устройства будут очевидный пример). В то время как 65 535 является стандартным минимумом, действительно небольшое устройство может указывать, что стандарт был преднамеренно отклонен по этой причине.
В реальном выражении на большой машине задолго до того, как у вас фактически закончится память, вы без необходимости оказываете давление на память таким образом, что это может повлиять на производительность. Было бы лучше, если бы динамический размер массива соответствовал размеру.