calloc
配置元素初始化為 0 的陣列在記憶體中。
void *calloc(
size_t num,
size_t size
);
參數
num
項目數目。size
以位元組為單位的每個元素的長度。
傳回值
calloc傳回的指標配置的空間。傳回的值所指向的儲存空間一定要適當地對齊來儲存任何型別的物件。若要取得指標的型別,而非void,請使用傳回的值時,施展型別。
備註
calloc函式配置陣列儲存空間num項目,每個長度size個位元組。每個元素都會初始化為 0。
calloc設定errno到ENOMEM記憶體配置失敗時,或記憶體數量要求超過_HEAP_MAXREQ。功能或其他錯誤碼資訊,請參閱errno、 _doserrno、 _sys_errlist 和 _sys_nerr。
calloc呼叫malloc使用 C++ _set_new_mode 函式來設定新的處理常式模式。新的處理常式 mode 指出是否在失敗時, malloc就是呼叫新的處理常式所設定的 _set_new_handler。預設情況下, malloc不會將新的處理常式呼叫上配置記憶體失敗。您可以覆寫此預設行為,以便,當calloc無法配置記憶體, malloc在同一個呼叫新的處理常式,就像new運算子不會因相同原因而失敗時。若要覆寫預設值,請呼叫
_set_new_mode(1)
早期在您的程式或使用 NEWMODE 的連結。OBJ (see 連結選項).
當應用程式被連結的 c 執行階段程式庫的偵錯版本calloc會解析成 _calloc_dbg。如需有關如何管理在偵錯的程序的堆積的詳細資訊,請參閱的 CRT 偵錯堆積。
calloc標示為__declspec(noalias)和__declspec(restrict),這表示函式保證不修改全域變數,且指標所傳回的不是別名。如需詳細資訊,請參閱 noalias 和限制。
需求
常式 |
所需的標頭 |
---|---|
calloc |
<stdlib.h> 和 <malloc.h> |
其他的相容性資訊,請參閱相容性在簡介中。
範例
// crt_calloc.c
// This program uses calloc to allocate space for
// 40 long integers. It initializes each element to zero.
#include <stdio.h>
#include <malloc.h>
int main( void )
{
long *buffer;
buffer = (long *)calloc( 40, sizeof( long ) );
if( buffer != NULL )
printf( "Allocated 40 long integers\n" );
else
printf( "Can't allocate memory\n" );
free( buffer );
}
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。