內存的靜態分配和動態分配區別:
1.時間不同:
靜態分配發生在程序的編譯和鏈接的時候。
動態分配發生在程序調入和執行的時候。
2.空間不同:
靜態分配只能是有棧來分配(有編譯器來完成,比如定義一個局部變量 int b = 1)
動態分配可以是堆分配(malloc分配,需要手動回收內存)或者棧分配(編譯器來完成,自動回收內存)
3.靈活度不同:
靜態分配需要提前指定空間大小,不能再動態改變大小。
動態分配不需要提前分配存儲空間,可以動態的調整大小。
4.生命周期不同:
靜態分配的內存在程序一開始運行就會分配內存,直到程序結束了,內存才會被釋放。
動態分配的內存是在程序調用函數時才被分配,函數結束了,動態內存就應該被釋放掉(別忘了手動釋放)。