void * malloc(unsigned s)
Возвращает указатель на начало области (блока) динамической памяти длиной в s байт. При неудачном завершении возвращает значение NULL.
calloc
void * calloc(unsigned n, unsigned m)
Возвращает указатель на начало области (блока) обнуленной динамической памяти, выделенной для размещения n элементов по m байт каждый. При неудачном завершении возвращает значение NULL.
realloc
void * realloc(void *bl, unsigned ns)
Изменяет размер блока ранее выделенной динамической памяти до размера ns байт. bl – адрес начала изменяемого блока. Если bl равен NULL (память не выделялась), то функция выполняется как malloc.
free
void * free(void *bl)
Освобождает ранее выделенный участок (блок) динамической памяти, адрес первого байта которого равен значению bl.
Остановимся детальнее на рассмотрении оператора
matrix = (int* )malloc (n*m*sizeof(int));
Функцияmalloc(unsigned s) возвращает указатель (void *)на начало области памяти, данные в которой имеют тип void.
Вначале нужно создать указатель на область памяти (int *matrix;) и использовать его для функции malloc.Для задания фактического типа возвращаемое значение необходимо преобразовать к нужному типу при помощи оператора преобразования типа. В противном случае компилятор выдаст сообщение об ошибке.