Выделить память под массив
#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 системной библиотеки