Выделить память под массив
#include <stdlib.h>void * calloc( size_t n,size_t size );
libc
Функция calloc() выделяет пространство в куче для массива из n объектов по size байтов каждый и инициализирует их 0
. Используйте free() или realloc() для освобождения блока памяти.
Так как реализация malloc() использует знаковые 32 -битные целые для внутреннего представления размера, нельзя выделить более 2 GB за один раз. Если размер превышает 2 GB, calloc() завершается с ошибкой ENOMEM . |
Если n или size равны нулю, поведением по умолчанию является возврат указателя, не равного NULL
, который доступен только для соответствующего вызова free() или realloc(). Не следует полагать, что этот указатель будет указывать на корректную память. Данное поведение можно контролировать с помощью переменной окружения MALLOC_OPTIONS
; если значение MALLOC_OPTIONS
содержит V, calloc() возвращает указатель равный NULL
. Данная переменная среды влияет также на malloc() и realloc(). Это поведение известно как поведение “System V”.
Указатель на начало выделенной памяти. Если возникла ошибка, функция возвращает NULL
, код ошибки записывается в errno.
#include <stdlib.h>#include <stdio.h>int main( void ){char* buffer;buffer = (char* )calloc( 80, sizeof( char ) );if ( buffer == NULL ){printf( "Can't allocate memory for buffer!\n" );return (EXIT_FAILURE);}free( buffer );return (EXIT_SUCCESS);}
ANSI, POSIX 1003.1
free(), malloc(), realloc(), sbrk()
Предыдущий раздел: Описание API системной библиотеки