連結器與載入器與執行檔格式

反覆進行malloc與free後,儘管剩餘記憶體的總量足夠,卻無法一次配置大塊區域。這種現象稱為什麼?

  1. A記憶體洩漏
  2. B碎裂(fragmentation)
  3. C堆疊溢位
查看答案與解析

正確答案:B. 碎裂(fragmentation)

反覆配置與釋放大小不一的區域後,使用中的區域之間會散布著零碎的空閒空間。即使空閒的總量很大,只要沒有連續的大塊空閒區域,配置大塊記憶體就會失敗。這稱為碎裂。記憶體配置器會依大小分開管理,或合併相鄰的空閒區域,以減少碎裂。對於長時間持續運作的嵌入式裝置,尤其需要注意。

  • A. 記憶體洩漏是因忘了釋放而使可用記憶體減少。
  • B. 正確。是空閒區域被切得很零碎的狀態。
  • C. 堆疊溢位是超過堆疊的上限。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 建置共用函式庫時,只公開要從外部使用的函式,並將內部函式的符號可見性(visibility)設為「hidden」,其優點下列何者正確?
  2. 關於C++中全域物件的建構函式在main之前執行的機制,下列何者正確?
  3. 關於編譯器從單一原始檔輸出的目的檔(.o),下列何者正確?
  4. 關於連結器的主要功能,下列何者正確?
  5. 關於連結器所進行的符號解析,下列說明何者正確?

這個領域的比較