Correct russian description of malloc (#33966)
This commit is contained in:
committed by
Randell Dawson
parent
e135ab81aa
commit
8bf9bd319e
@ -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 для назначения памяти с последующей передачей указателя в другую функцию более эффективно нежели воссоздание этой структуры в самой функции.
|
||||
|
Reference in New Issue
Block a user