在C++中,靜態變量(static variable)是一種特殊類型的變量,其內存分配方式與普通變量有所不同。靜態變量可以分為兩種:靜態全局變量和靜態局部變量。
靜態全局變量:靜態全局變量在程序的整個運行周期內都存在,其內存分配在程序啟動時就已經完成,并且在程序結束時才會被釋放。靜態全局變量存儲在全局數據區中,其作用域為整個源文件。
靜態局部變量:靜態局部變量在函數首次被調用時分配內存空間,但在程序的整個運行周期內都存在。與普通局部變量不同,靜態局部變量的內存空間在函數執行完畢后不會被釋放,而是保留其數值。靜態局部變量存儲在靜態存儲區中,其作用域為包含該變量的函數。
總的來說,靜態變量的內存分配是在程序啟動時進行的,并且在整個程序運行周期內都存在。靜態變量在內存中的位置取決于其類型(全局變量還是局部變量)以及存儲區域(全局數據區還是靜態存儲區)。