你需要去了解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