共用方式為


_recalloc

realloc 和 calloc 的組合。重新配置在記憶體中的一個陣列並初始化它的項目為 0。

void *_recalloc( 
   void *memblock
   size_t num,
   size_t size 
);

參數

  • memblock
    先前配置的記憶體區塊的指標。

  • num
    項目數目。

  • size
    以位元組為單位的每個元素的長度。

傳回值

_recalloc傳回void配置 (以及可能已移動) 的記憶體區塊的指標。

不沒有足夠的記憶體來展開區塊,以指定的大小,如果原始區塊會進行變更,以及NULL會傳回。

如果要求的大小為零,則在區塊所指memblock會釋出。 傳回值是NULL,以及memblock處於指向已釋放的區塊。

傳回的值會指向儲存空間,以保證會適當地對齊來儲存任何型別的物件。若要取得指標的型別,而非void,請使用傳回的值時,施展型別。

備註

_recalloc函式變更已配置的記憶體區塊的大小。memblock引數會指向記憶體區塊的開頭。如果memblock是NULL,_recalloc一樣的行為就calloc和配置新區塊的num * size個位元組。每個元素都會初始化為 0。如果memblock不是NULL,它應該是由先前的呼叫所傳回的指標calloc, malloc,或realloc

因為新區塊可能會在新的記憶體位置,將指標傳回 _recalloc不保證一定會通過指標memblock引數。

_recalloc設定errno到ENOMEM記憶體配置失敗時,或記憶體數量要求超過_HEAP_MAXREQ。功能或其他錯誤碼資訊,請參閱errno、 _doserrno、 _sys_errlist 和 _sys_nerr

recalloc呼叫realloc ,才能使用 C++ _set_new_mode 函式來設定新的處理常式模式。新的處理常式 mode 指出是否在失敗時, realloc就是呼叫新的處理常式所設定的 _set_new_handler。預設情況下, realloc不會將新的處理常式呼叫上配置記憶體失敗。您可以覆寫此預設行為,以便,當 _recalloc無法配置記憶體, realloc在同一個呼叫新的處理常式,就像new運算子不會因相同原因而失敗時。若要覆寫預設值,請呼叫

_set_new_mode(1)

早期的程式或使用 NEWMODE.OBJ 的連結。

應用程式的 c 執行階段程式庫 _ 的偵錯版本的連結時recalloc會解析成_recalloc_dbg。如需有關如何管理在偵錯的程序的堆積的詳細資訊,請參閱的 CRT 偵錯堆積

_recalloc標示為__declspec(noalias)和__declspec(restrict),這表示函式保證不修改全域變數,且指標所傳回的不是別名。如需詳細資訊,請參閱 noalias限制

需求

常式

所需的標頭

_recalloc

<stdlib.h> 和 <malloc.h>

其他的相容性資訊,請參閱相容性在簡介中。

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

記憶體配置

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

free

概念

連結選項