_alloca

_alloca,記憶體分配函式,與malloc,calloc,realloc類似·,但是注意一個重要的區別,_alloca是在棧(stack)上申請空間,用完馬上就釋放。

基本介紹

  • 中文名:_alloca
  • 類型記憶體分配函式
  • 特點:在棧(stack)上申請空間
  • 類似:malloc,calloc,realloc
  • 頭檔案:malloc.h
函式簡介,函式原型,函式說明,注意事項,

函式簡介

記憶體分配函式,與malloc,calloc,realloc類似.
但是注意一個重要的區別,_alloca是在棧(stack)上申請空間,用完馬上就釋放.
包含在頭檔案malloc.h中.
在某些系統中會宏定義成alloca使用.
#define _alloca alloca

函式原型

void * __cdecl _alloca(size_t);

函式說明

函式返回一個指向申請到的空間的void型指針.
MSDN中解釋如下:
The _alloca routine returns a void pointer to the allocated space, which is guaranteed to be suitably aligned for storage of any type of object. To get a pointer to a type other than char, use a type cast on the return value. A stack overflow exception is generated if the space cannot be allocated.

注意事項

在調用 _alloca的函式返回的時候, 它分配的記憶體會自動釋放。
也就是說, 用 alloca 分配的記憶體在棧上。
_alloca 不具可移植性, 而且在沒有傳統堆疊的機器上很難實現。
當它的返回值直接傳入另一個函式時會帶來問題,因為他分配在棧上.
由於這些原因, _alloca 不宜使用在必須廣泛移植的程式中, 不管它可能多么有用。
既然 C99 支持變長數組(VLA), 它可以用來更好的 完成 alloca() 以前的任務。

相關詞條

熱門詞條

聯絡我們