首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

華為 C 語言面試題精選:變量存儲區域劃分與靜態/動態內存分配深度對比

     編輯:關於C語言

經典填空題

程序的局部變量存在於(棧)中,全局變量存在於(靜態區)中,動態申請數據存在於(堆)中。

內存區域速覽

靜態 vs 動態內存分配 五維對比

區域典型內容管理方式
棧局部變量、函數參數、返回地址、寄存器保存編譯器自動分配/釋放,LIFO
堆malloc/free/new/delete 分配的內存程序員手動管理,需配對釋放
靜態區全局變量、static 變量、字符串常量程序啟動分配,結束釋放
代碼區二進制指令只讀,共享

選型指導

  • 編譯期可確定大小、生命週期固定 → 靜態分配(優先)
  • 運行期才知大小、需動態增減、跨函數共享 → 動態分配
  • 嵌入式/實時系統:盡量靜態,避免運行時不確定性
  • 動態分配質量高度依賴程序員功力,嚴防洩漏

實戰感悟

uBoot 移植時必須建立良好的 C 運行環境,**設置棧指針**是關鍵一步。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度靜態分配動態分配
時機編譯期運行期
CPU 開銷無(編譯器完成)有(運行時分配/釋放)
空間位置棧堆
類型依賴無需指針/引用需指針或引用支持
大小確定編譯前須知運行時按需決定
控制權編譯器程序員
效率高較低(管理開銷)
風險棧溢出內存洩漏、懸空指針、碎片