Correct russian description of malloc (#33966)

This commit is contained in:
Aleksei Aksenov
2019-08-08 01:05:56 +03:00
committed by Randell Dawson
parent e135ab81aa
commit 8bf9bd319e

View File

@ -1,42 +1,41 @@
---
title: malloc
localeTitle: таНос
localeTitle: malloc
---
# malloc в C
malloc () - это библиотечная функция, которая позволяет C динамически выделять память из кучи. Куча - это область памяти, где что-то хранится.
malloc() - это библиотечная функция, которая позволяет C динамически выделять память из кучи. Куча - это область памяти, реализующая динамическое хранение с ручным управлением.
malloc () является частью stdlib.h и для его использования вам необходимо использовать `#include <stdlib.h>` .
malloc() является частью stdlib.h и для его использования вам необходимо подключить `#include <stdlib.h>` .
## Использование Malloc
## Использование malloc
malloc () выделяет память запрошенного размера и возвращает указатель на начало выделенного блока. Чтобы удерживать этот возвращенный указатель, мы должны создать переменную. Указатель должен быть того же типа, что и в инструкции malloc.
Здесь мы сделаем указатель на скоро будущий массив ints
malloc() выделяет память запрошенного размера и возвращает указатель на начало выделенного блока. Чтобы запомнить этот возвращенный указатель, мы должны создать переменную. Давайте создадим указатель на пока не существующий массив целых чисел (тип int).
```C
int* arrayPtr;
```
В отличие от других языков, C не знает тип данных, на который он выделяет память; это нужно сказать. К счастью, C имеет функцию, называемую `sizeof()` которую мы можем использовать.
Результат malloc будет автоматически приведен к используемому нами типу указателя. В отличие от других языков, C не знает тип данных, на который он выделяет память; malloc знает лишь количество байт, который необходимо выделить. К счастью, в C есть функция `sizeof()`, которая может нам помочь.
```C
arrayPtr = (int *)malloc(10 * sizeof(int));
arrayPtr = malloc(10 * sizeof(int));
```
Этот оператор использовал malloc для выделения памяти для массива из 10 целых чисел. Поскольку размеры могут меняться между компьютерами, важно использовать функцию sizeof () для вычисления размера на текущем компьютере.
Этот оператор использует malloc для выделения памяти для массива из 10 целых чисел. Поскольку размеры могут различаться на разных компьютерах, важно использовать функцию sizeof() для вычисления размера на текущем компьютере.
Любая память, выделенная во время выполнения программы, должна быть освобождена до закрытия программы. Чтобы `free` память, мы можем использовать функцию free ()
Память, выделенная во время выполнения программы, должна быть освобождена до ее закрытия. Чтобы освободить память, используется функция free()
```C
free( arrayPtr );
```
Этот оператор освободит ранее выделенную память. C не поставляется с `garbage collector` как некоторые другие языки, такие как Java. В результате память, которая не была должным образом освобождена, будет продолжать выделяться после закрытия программы.
Этот оператор освободит ранее выделенную память. В C нет встроенного сборщика мусора, как в некоторых других языках, напр. в Java. В результате память, которая не была должным образом освобождена, будет оставаться выделенной после закрытия программы.
# Прежде чем продолжить ...
## Обзор
* Malloc используется для динамического распределения памяти и полезен, когда вы не знаете объем памяти, необходимый во время компиляции.
* malloc используется для динамического выделения памяти и полезен, когда вы во время компиляции не знаете объем памяти, который будет необходим.
* Выделение памяти позволяет объектам существовать за пределами текущего блока.
* C передает значение вместо ссылки. Использование malloc для назначения памяти, а затем передать указатель на другую функцию, более эффективно, чем функция, воссоздающая структуру.
* C передает значение вместо ссылки. Использование malloc для назначения памяти с последующей передачей указателя в другую функцию более эффективно нежели воссоздание этой структуры в самой функции.