alloca

記憶體分配函式,與malloc,calloc,realloc類似. 但是注意一個重要的區別,_alloca是在棧(stack)上申請空間,該變數離開其作用域之後被自動釋放,無需手動調用釋放函式。 包含在頭檔案malloc.h中。 在某些系統中會宏定義成_alloca使用。

函式簡介

記憶體分配函式,與malloc,calloc,realloc類似.

但是注意一個重要的區別, _alloca是在棧(stack)上申請空間,用完馬上就釋放.

包含在頭檔案malloc.h中.

在某些系統中會宏定義成 _alloca使用.

函式原型

注意事項

在調用 alloca的函式返回的時候, 它分配的記憶體會自動釋放。

也就是說, 用 alloca 分配的記憶體在棧上。

alloca不具可移植性, 而且在沒有傳統堆疊的機器上很難實現。

當它的返回值直接傳入另一個函式時會帶來問題,因為他分配在棧上.

由於這些原因, alloca不宜使用在必須廣泛移植的程式中, 不管它可能多么有用。

既然 C99 支持變長數組(VLA), 它可以用來更好的 完成 alloca() 以前的任務。

示例:

int main()

{

int *p = (int *)alloca(sizeof(int)*10);

free(p);//此時不能用free()去釋放,會導致錯誤

return0;

}

相關詞條

相關搜尋

熱門詞條

聯絡我們