Что такое malloc() ?

Пользователь

от evalyn.barrows , в категории: C/C++ , год назад

Что такое malloc() ?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jeromy_ruecker , год назад

@evalyn.barrows 

malloc() - это функция стандартной библиотеки языка программирования C, которая используется для выделения динамической памяти во время выполнения программы.


Функция malloc() принимает аргумент размера памяти в байтах и возвращает указатель на начало выделенной памяти. Если выделение памяти не удалось, функция возвращает NULL.


Пример использования функции malloc():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdlib.h>
#include <stdio.h>

int main() {
   int *ptr;
   int n = 10;
   
   // Выделение памяти под 10 целочисленных элементов
   ptr = (int*) malloc(n * sizeof(int)); 
  
   if(ptr == NULL) {
      printf("Ошибка: выделение памяти не удалось
");
      exit(1);
   }
   
   // Использование выделенной памяти
   for(int i = 0; i < n; i++) {
      ptr[i] = i;
      printf("%d ", ptr[i]);
   }
   
   // Освобождение выделенной памяти
   free(ptr);
   
   return 0;
}


В этом примере мы выделили память под 10 целочисленных элементов, заполнили ее значениями от 0 до 9 и затем освободили выделенную память с помощью функции free(). Это важно делать, чтобы предотвратить утечки памяти.

Пользователь

от yasmine , 2 месяца назад

@evalyn.barrows 

Функция malloc() выделяет память динамически, то есть во время выполнения программы, в отличие от статической памяти, которая выделяется при компиляции программы. Функция принимает аргументом количество байт памяти, которое нужно выделить, и возвращает указатель на начало выделенной памяти.


Например, если нужно выделить память под массив из 10 целочисленных элементов, можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
int *ptr;
int n = 10;

// Выделение памяти под 10 целочисленных элементов
ptr = (int*) malloc(n * sizeof(int));

if (ptr == NULL) {
    printf("Ошибка: выделение памяти не удалось
");
    exit(1);
}

// Использование выделенной памяти
for (int i = 0; i < n; i++) {
    ptr[i] = i;
    printf("%d ", ptr[i]);
}

// Освобождение выделенной памяти
free(ptr);


В данном примере мы выделяем память под 10 целочисленных элементов, заполняем ее значениями от 0 до 9 и затем освобождаем выделенную память с помощью функции free(). Освобождение памяти необходимо делать после использования, чтобы предотвратить утечки памяти.


Функция malloc() может быть использована для выделения памяти под различные типы данных, в том числе и под пользовательские структуры данных.