int* n = new int; //1
int* b = new int (10); //2
int* q = new int [10]; //3
Операция позволяет выделить и сделать доступным участок в основной памяти, размеры которого соответствуют типу данных, заданного имя_типа.
• с помощью функций mal1oc() и calloc(). Синтаксис:
имя_указателя = (тип_указателя)malloc(объем_в_байтах);
объем_в_байтах – количество байтов ОП, выделяемое адресуемому значению.
int* u = (int *)malloc(sizeof (int)); //4
имя_указателя = (тип_указателя)сalloc(число_элементов, размер_элемента_в_байтах); -число_элементов -фактическое число элементов, под которые выделяется память; -размер_элемента_в_байтах -размер одного элемента в байтах.
int* u = (int *)сalloc(1, sizeof (int)); //5
Для работы с функциями malloc() и calloc() необходимо директивой препроцессора #include подключить файл alloc.h
В операторе 1 операция newвыполняет выделение достаточного для размещения величины типа intучастка динамической памяти и записывает адрес начала этого участка в переменную n. Память под саму переменную n (размера, достаточного для размещения указателя) выделяется на этапе компиляции.
В операторе 2, кроме описанных выше действий, производится инициализация выделенной динамической памяти значением 10.
В операторе 3 операция newвыполняет выделение памяти под 10 величин типа int (массива из 10 элементов) и записывает адрес начала этого участка в переменную q, которая может трактоваться как имя массива. Через имя можно обращаться к любому элементу массива. О массивах рассказывается в следующем разделе.
В операторе 4 делается то же самое, что и в операторе 1, но с помощью функции выделения памяти mal1oc(), унаследованной из библиотеки С.
В функцию передается один параметр – количество выделяемой памяти в байтах. Конструкция (int*)используется для приведения типа указателя, возвращаемого функцией, к требуемому типу. Если память выделить не удалось, функция возвращает 0.