程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> linux C 內存管理方式之半動態,linux內存管理動態

linux C 內存管理方式之半動態,linux內存管理動態

編輯:關於C語言

linux C 內存管理方式之半動態,linux內存管理動態


  看到半動態申請內存,第一反應這是什麼鬼?

  實際上半動態內存申請很容易理解,在GNU C中使用alloca函數來實現

#include <stdlib.h>
void *alloca (size_t size)

  alloca函數可以像malloc一樣動態申請內存(注意所申請的內存位置在調用函數的棧裡面,頁因此在調用函數結束後自動釋放)

好處是顯而易見的:既可以自由得申請空間,又不需要手動釋放內存。

壞處是:發生錯誤時,無法得到一個清晰得錯誤消息。還有就是,非GNU系統不支持alloca,這是一個BSD擴展,兼容性不好。(其他平台可能會使用C寫一個模擬得alloca,但效率不好)

  在GNU C中得大部分情況下,你可以使用可變大小的數組代替alloca。

區別:  可變大小的數組只在數組名所在的區域有效,超過則釋放。alloca 申請的空間則一直保留的函數結束。

     alloca可以在循環體中使用,每次循環都逐步增加內存空間。而可變大小的數組不行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved