所以我在這裏就一個關於堆棧空間的基本問題。我讀過編譯時必須知道堆棧中的變量,但我不確定這是多麼準確。讓我們這個片段:作爲數組大小的命令行參數:編譯時間還是運行時間?
int main(int argc, char*argv[])
{
int numProcesses = argv[1];
int arr[numProcesses] = {};
...
}
當然,numProcesses的價值,和ARR [],不能在編譯時,編譯器知道,因此大小。那麼arr [numProcesses]如何分配,何時何地分配?感謝我肯定會是一個有見地的答案。
GCC有一個擴展,允許在堆棧上分配可變長度的數組。 C99使其成爲C的官方功能。 –
一個堆棧,在運行時。假裝編譯器爲你調用['alloca'](http://linux.die.net/man/3/alloca)。 (儘管alloca是一個非標準功能) – immibis
不知道downvote的作用是什麼... – nirvanaswap