c語言靜態(tài)變量什么時候釋放?
對,一個運行的程序屬于一個進程,進程是由操作系統(tǒng)管理的,程序結束了,該程序所占用的資源會由操作系統(tǒng)來回收。
靜態(tài)變量的靜態(tài):變量占用的存地址不釋放,也就是說它的地址它從頭到尾一內直占著,容不給其他內存單元占用而已,其本身的值是可以改變的。
動態(tài)的變量:比如調用函數(shù)體里定義的變量,在函數(shù)執(zhí)行后便釋放出去,把有用的地址資源貢獻給其他量,釋放以后如果你用指針來打印這個地址的值的話,就很有可能不是原來的值了。
擴展資料:
靜態(tài)變量也可以用于存儲常數(shù)。具體來說,靜態(tài)變量(全局變量及匯編語言里定義的符號亦同)可用const,constant或final(根據(jù)語言決定)等關鍵字標識,這時其值就會在編譯時設定,并且無法在運行時改變。
編譯器通常將靜態(tài)常量與文本一起置于目標文件的文本區(qū)域,而非常量初始化數(shù)據(jù)則置于數(shù)據(jù)區(qū);而如若有需要,有些編譯器還可選擇為其開辟專用區(qū);為防止常數(shù)變量被錯誤的指針寫入覆蓋,亦可在這塊區(qū)域啟用內存保護機制。