Разница между статическим и динамическим выделением памяти

Оглавление:

Разница между статическим и динамическим выделением памяти
Разница между статическим и динамическим выделением памяти

Видео: Разница между статическим и динамическим выделением памяти

Видео: Разница между статическим и динамическим выделением памяти
Видео: Что такое динамическая память. Утечка памяти. Стек и куча. Статическая память. Обзорный урок #45 2024, Июль
Anonim

Ключевая разница - статическое и динамическое выделение памяти

В программировании необходимо хранить вычислительные данные. Эти данные хранятся в памяти. Ячейки памяти для хранения данных в компьютерном программировании известны как переменные. Переменные имеют определенный тип данных. Поэтому память выделяется для запуска программ. Память может быть выделена двумя способами. Это статическое выделение памяти и динамическое выделение памяти. При статическом распределении памяти после выделения память не может быть изменена. Память нельзя использовать повторно. Но при динамическом распределении памяти, как только память выделена, ее можно изменить. Ключевое различие между статическим и динамическим выделением памяти заключается в том, что при статическом выделении памяти после выделения памяти размер памяти фиксируется, а при динамическом выделении памяти после выделения памяти размер памяти может быть изменен.

Что такое выделение статической памяти?

При распределении статической памяти выделенная память является фиксированной. Как только память выделена, ее нельзя изменить. Память нельзя увеличить или уменьшить. Например, в языке C, если программист пишет int x, это означает, что переменная может хранить целочисленное значение. Количество байтов зависит от компьютера. Также могут быть массивы. Например. интервал х [5]; Этот x представляет собой массив, в котором может храниться последовательность данных одного типа. Он может хранить пять целочисленных элементов. Он не может хранить более пяти элементов. В Java массив может быть создан как int arr=new int[5]; Массив ‘arr’ может хранить 5 целочисленных значений и не может хранить больше.

Разница между статическим и динамическим выделением памяти
Разница между статическим и динамическим выделением памяти
Разница между статическим и динамическим выделением памяти
Разница между статическим и динамическим выделением памяти

Рисунок 01: Методы распределения памяти

При статическом выделении памяти после выделения переменных они остаются постоянными. После первоначального выделения программист не может изменить размер памяти. Если программист выделил массив, который может хранить 10 элементов, невозможно хранить значения больше указанного количества. Если программист изначально выделил массив, который может содержать 10 элементов, а ему нужно было только 5 элементов, то происходит растрата памяти. Эта память больше не нужна, но повторно использовать память также невозможно. Выделение статической памяти фиксировано, но реализация проста и удобна, а также работает быстро.

Что такое динамическое выделение памяти?

Иногда необходимо изменить размер памяти. Таким образом, память может быть выделена динамически. В зависимости от вставок и удалений элементов данных память может увеличиваться или уменьшаться. Это известно как динамическое выделение памяти.

В заголовочном файле stdlib.h языка C есть четыре функции для динамического выделения памяти. Это calloc, malloc, realloc и free. Функция malloc() выделяет требуемый размер байтов и возвращает пустой указатель, указывающий на первый байт выделенной памяти. Функция calloc() выделяет требуемый размер байтов и инициализирует их нулем. Затем возвращает пустой указатель на память. Функция free() используется для перераспределения выделенной памяти. И функция realloc может изменить ранее выделенную память. После выделения памяти с помощью calloc или malloc размер памяти фиксируется, но его можно увеличить или уменьшить с помощью функции realloc. В Java коллекции можно использовать для динамического выделения памяти.

Основным преимуществом динамического выделения памяти является экономия памяти. Программист может выделить память или освободить память по мере необходимости. Память может быть перераспределена во время выполнения и может освобождать память, когда она не требуется. Динамическое выделение памяти также более эффективно, чем статическое. Одним из недостатков является сложность реализации динамического распределения памяти.

Каковы сходства между статическим и динамическим выделением памяти?

  • Оба являются механизмами распределения памяти.
  • И то и другое должно быть реализовано программистом вручную.

В чем разница между статическим и динамическим выделением памяти?

Статическое и динамическое выделение памяти

Статическое выделение памяти - это метод выделения памяти, и после того, как память выделена, она становится фиксированной. Динамическое выделение памяти - это метод выделения памяти, и после выделения памяти ее можно изменить.
Модификация
При выделении статической памяти невозможно изменить размер после первоначального выделения. При динамическом распределении памяти память может быть соответственно уменьшена или увеличена.
Реализация
Статическое выделение памяти легко реализовать. Динамическое выделение памяти сложно реализовать.
Скорость
В статической памяти выделение выполняется быстрее, чем в динамическом. В динамической памяти выделение выполняется медленнее, чем в статической памяти.
Использование памяти
При распределении статической памяти нельзя повторно использовать неиспользуемую память. Динамическое выделение памяти позволяет повторно использовать память. При необходимости программист может выделить больше памяти. Он может освободить память, когда это необходимо.

Резюме – статическое и динамическое выделение памяти

В программировании статическое выделение памяти и динамическое выделение памяти - это два механизма выделения памяти. Разница между статическим и динамическим выделением памяти заключается в том, что при статическом выделении памяти после выделения памяти размер памяти фиксируется, а при динамическом выделении памяти после выделения памяти размер памяти может быть изменен. Программист может решить, должна ли память быть статической или динамической, в зависимости от приложения.

Загрузить PDF-файл статического и динамического распределения памяти

Вы можете загрузить PDF-версию этой статьи и использовать ее в автономном режиме в соответствии с примечанием к цитированию. Загрузите PDF-версию здесь: Разница между статическим и динамическим распределением памяти

Рекомендуемые: