malloc | Microsoft Docs
文章推薦指數: 80 %
void *malloc( size_t size );. 參數. size 要配置的位元組。
傳回值. malloc 會傳回void 指標至配置的空間;如果沒有足夠的記憶體,則為 NULL 。
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
語言
閱讀英文
儲存
目錄
閱讀英文
儲存
Twitter
LinkedIn
Facebook
電子郵件
目錄
malloc
發行項
05/02/2022
10位參與者
本文內容
配置記憶體區塊。
語法
void*malloc(
size_tsize
);
參數
size
要配置的位元組。
傳回值
malloc會傳回void指標至配置的空間;如果沒有足夠的記憶體,則為NULL。
若要傳回void以外類型的指標,請對傳回值使用類型轉換。
此傳回值所指向的儲存空間保證會經過適當調整,因此可儲存對齊需求小於或等於基本對齊需求的任何物件類型(VisualC++中,基本對齊方式是、或8個位元組所需的double對齊方式。
在以64位平臺為目標的程式碼中,它是16個位元組。
)針對_aligned_malloc具有較大對齊需求的物件配置儲存體,例如,使用__declspec(align(n))其中n所宣告的SSE類型和__m128__m256和類型大於8。
如果size為0,malloc會在堆積中配置零長度項目,並傳回該項目的有效指標。
請一律檢查malloc的傳回值,即使要求的記憶體數量很小亦然。
備註
malloc函式至少會配置size個位元組的記憶體區塊。
因為對齊和維護資訊需要空間,所以此區塊可能會大於size個位元組。
如果記憶體配置失敗,或所要求的記憶體數量超過_HEAP_MAXREQ,malloc會將errno設為ENOMEM。
如需這個和其他錯誤碼的相關資訊,請參閱errno、_doserrno_sys_errlist和_sys_nerr。
啟動程式碼使用malloc來為_environ、envp和argv變數配置儲存空間。
下列函式及其對應的寬字元版本也會呼叫malloc。
calloc
_exec功能
fgetc
_fgetchar
fgets
fprintf
fputc
_fputchar
fputs
fread
fscanf
fseek
fsetpos
_fullpath
fwrite
getc
getchar
_getcwd
_getdcwd
gets
_getw
_popen
printf
putc
putchar
_putenv
puts
_putw
scanf
_searchenv
setvbuf
_spawn功能
_strdup
system
_tempnam
ungetc
vfprintf
vprintf
C++_set_new_mode函式會設定的新處理常式模式malloc。
新的處理常式模式表示失敗時,malloc是否呼叫_set_new_handler所設定的新處理常式。
根據預設,malloc不會在失敗時呼叫新的處理常式來配置記憶體。
您可以覆寫這個預設行為,因此,在malloc無法配置記憶體時,malloc會呼叫新的處理常式,其方法與new運算子因相同原因而失敗時所執行的方法相同。
若要覆寫預設值,請提早在程式中呼叫_set_new_mode(1),或使用(連結NEWMODE.OBJ,請參閱連結選項)。
當應用程式與C執行時間程式庫的偵錯版本連結時,malloc會解析為_malloc_dbg。
如需如何在偵錯程序期間管理堆積的詳細資訊,請參閱CRT偵錯堆積詳細資料。
malloc標記為__declspec(noalias)和__declspec(restrict),這表示保證函式不會修改全域變數,而且傳回的指標沒有別名。
如需詳細資訊,請參閱noalias和restrict。
根據預設,此函式的全域狀態會限定于應用程式。
若要變更此問題,請參閱CRT中的全域狀態。
規格需求
常式傳回的值
必要的標頭
malloc
程式庫
所有版本的C執行階段程式庫。
範例
//crt_malloc.c
//Thisprogramallocatesmemorywith
//malloc,thenfreesthememorywithfree.
#include
延伸文章資訊
- 1c語言: 什麼時候必用malloc而不直接宣告陣列? - iT 邦幫忙
大家好,想問一個c語言的觀念問題, 什麼時候必用到malloc語法? 我知道malloc的語法, 譬如說要宣告一個5*4的int二維陣列, 我們可以這樣寫: int ...
- 2C 库函数– malloc() | 菜鸟教程
C 库函数- malloc() C 标准库- <stdlib.h> 描述C 库函数void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。 声明下面是ma...
- 3C/C++ malloc 用法與範例
本篇ShengYu 介紹C/C++ malloc 用法與範例,malloc 是用來配置一段記憶體區塊的函式,以下介紹如何使用malloc 函式。 C/C++ 可以使用malloc 來配置 ...
- 4malloc、free、calloc 與realloc - OpenHome.cc
malloc、free、calloc 與realloc ... 到目前為止,變數建立後會配置記憶體空間,這類資源是配置在記憶體的堆疊區(Stack),生命週期侷限於函式執行期間,也就是函式執行過...
- 5malloc - cppreference.com