#include <stdlib.h>
void * malloc(size_t size_in_bytes);
// size_in_bytes - Размер памяти требуемый для выделения, в байтах.
// Возвращаемое значение - указатель на начало блока непрерывной выделенной памяти. Или ноль в случае неудачи.
Функция void* malloc(int size) выделяет непрерывный блок памяти на size байт и возвращает указатель на начало этой памяти. Если память не выделена то возвращается нулевой указатель.
Тип данных size_t это целочисленный беззнаковый тип данных принимаемый оператором sizeof(), его значение зависит от разрядности операционной системы 32 или 64 бита и максимальное значение определяет максимальный размер массива.
#include <stdio.h> //printf()
#include <stdlib.h> // malloc(), free()
int main(){
const int SIZE = 10; // Размер массива
int *ar = malloc(SIZE * sizeof(int)); // Выделяем память под SIZE int
for(int i = 0; i < SIZE; i++){
ar[i] = i * i; // Инициализируем массив
}
for(int i = 0; i < SIZE; i++){
printf("%d ", ar[i]); // Используем массив
}
free(ar); // Освобождаем память выделенную под ar
}