Что происходит в C при создании массива отрицательной длины?
Например:
int n = -35;
int testArray[n];
for(int i = 0; i < 10; i++)
testArray[i]=i+1;
Этот код будет компилировать (и не вызывает никаких предупреждений с включенным -Wall), и кажется, что вы можете назначить testArray[0]
без проблем. Присваивая прошлое, которое дает либо ошибку segfault, либо незаконную инструкцию, и чтение чего-либо из массива говорит "Abort trap" (я не знаком с этим). Я понимаю, что это несколько академический, и, надеюсь (надеюсь) никогда не появятся в реальной жизни, но есть ли какой-либо особый способ, который стандарт C говорит, чтобы обрабатывать такие массивы, или это зависит от компилятора от компилятора?