Итак, я здесь с очень фундаментальным вопросом о пространстве стека. Я читал, что переменные в стеке должны быть известны во время компиляции, но я не уверен, насколько это точно. Давайте этот фрагмент:Аргумент командной строки как размер массива: время компиляции или время выполнения?
int main(int argc, char*argv[])
{
int numProcesses = argv[1];
int arr[numProcesses] = {};
...
}
Естественно, значение numProcesses, и, следовательно, размер обр [], не может быть известно компилятором во время компиляции. Итак, как, когда и где выделяется arr [numProcesses]? Спасибо за то, что я уверен, был бы проницательным ответом.
GCC имеет расширение, позволяющее распределять массивы переменной длины в стеке. C99 делает его официальной особенностью C. –
Один стек, во время выполнения. Придумайте для компилятора вызовы ['alloca'] (http://linux.die.net/man/3/alloca) для вас. (Хотя alloca - нестандартная функция) – immibis
Не знаете, что такое downvote ... – nirvanaswap