Основы программирования на языке C

       

Создание динамических объектов


По стандарту аргументы функций malloc, calloc имеют тип возвращаемого объекта void*.

char s = (char*)malloc(size); unsigned size; /* объем памяти, который необходимо выделить */ char *s = (char *)calloc(nelem,elsize); unsigned nelem; /* число элементов, для которых нужно выделить память */ unsigned elsize; /* объем памяти, который необходимо выделить для каждого элемента */ /* либо просто заменив char* на void* void* calloc(nelem, elsize); unsigned nelem; unsigned elsize; */

Обе функции возвращают знаковый указатель, указывающий на выделенную память. Для определения необходимого объема памяти можно использовать оператор sizeof:

sizeof (выражение)

Объем памяти, необходимый для хранения выражения:

sizeof(T)

Объем памяти, необходимый для хранения значений типа T.

Функции malloc и calloc возвращают указатель на созданный динамический объект. Фактически функции возвращают знаковые указатели, которые могут быть явно преобразованы к подходящему типу указателя. Значения, возвращенные функциями распределения памяти, используются для ссылок на динамические объекты. Например, с помощью оператора

pi = (int *) malloc(sizeof(int));

выделяется память для одного целого значения. Адрес этой области памяти присваивается переменной pi после его преобразования из типа char * (указатель на знак), с которым он возвращается функцией malloc, к типу int * (указатель на целое), т.е. типу переменной pi.



Содержание раздела