C語言中所有變量和常量所使用的內存總結


(1)相同點:三種獲取內存的方法,都可以給程序提供可用內存,都可以用來定義變量給程序用。
(2)不同點:棧內存對應C中的普通局部變量(別的變量還用不了棧,而且棧是自動的,由編譯器和運行時環境共同來提供服務的,程序員無法手工控制);堆內存完全是獨立於我們的程序存在和管理的,程序需要內存時可以去手工申請malloc,使用完成后必須盡快free釋放。(堆內存對程序就好象公共圖書館對於人);數據段對於程序來說對應C程序中的全局變量靜態局部變量
(3)如果我需要一段內存來存儲數據,我究竟應該把這個數據存儲在哪里?(或者說我要定義一個變量,我究竟應該定義為局部變量還是全局變量還是用malloc來實現)。不同的存儲方式有不同的特點,簡單總結如下:
 * 函數內部臨時使用,出了函數不會用到,就定義局部變量
 * 堆內存和數據段幾乎擁有完全相同的屬性,大部分時候是可以完全替換的。但是生命周期不一樣
   堆內存的生命周期是從malloc開始到free結束,而全局變量是從整個程序一開始執行就開始,
   直到整個程序結束才會消滅,伴隨程序運行的一生。啟示:如果你這個變量只是在程序的一個
   階段有用,用完就不用了,就適合用堆內存;如果這個變量本身和程序是一生相伴的,那就
   適合用全局變量。(堆內存就好象租房、數據段就好象買房。堆內存就好象圖書館借書,數
   據段就好象自己書店買書)你以后會慢慢發現:買不如租,堆內存的使用比全局變量廣泛(老朱就是王道啊)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM