Поделиться через


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, and _sys_nerr.

calloc вызывает malloc для использования функции C++ _set_new_mode, чтобы установить новый режим обработки. Указывает, может ли новый режим обработки, при сбое вызова malloc, использовать новую процедуру обработчика как набор _set_new_handler. По умолчанию malloc не вызывает новую процедуру обработчика при сбое выделения памяти. Можно переопределить это поведение по умолчанию, чтобы в случае сбоя предоставления памяти методом calloc метод malloc вызывал новую процедуру обработчика таким же образом, как это делает оператор new при сбое по той же причине. Чтобы переопределить значение по умолчанию, вызовите

_set_new_mode(1)

на ранних этапах программы или компонуйте с использованием NEWMODE.OBJ (см. Параметры ссылок).

Когда приложение связано с отладочной версией библиотек времени выполнения языка C, calloc соответствует _calloc_dbg. Дополнительные сведения о том, как происходит управление кучей в процессе отладки см. в разделе Отладочная куча CRT.

calloc помечен __declspec(noalias) и __declspec(restrict), что означает, что функция гарантированно не изменит глобальные переменные, а для возвращаемого указателя не будет создан псевдоним. Дополнительные сведения см. в разделах noalias и restrict.

Требования

Подпрограмма

Обязательный заголовок

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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Выделение памяти

свободные

malloc

realloc