你需要去了解C語言執行指令時 memory發生了甚麼事情stack和heap區在每次執行不同的事情 行為是如何你已經不是multi-thread或subroutine的問題 而是根本這個問題不管在哪個系統都一樣簡單說global static變數一開始就會存在memoryfunction內變數在每次進入都會push到stack所以有一段時期寫程式變數一定要先宣告 放在一起做malloc則是去heap區配置memory離開任何區間ex: for while function stack就會清掉而heap上的東西一定要free才會清掉global static則是英勇長存只要fork出去就會有一個概念上的stack給你用所以fork進入了區間 會把區域變數推到這個stack