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

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

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

СОДЕРЖАНИЕ

1. Обзор и основные отличия
2. Что такое статическое распределение памяти
3. Что такое динамическое распределение памяти
4. Сходства между статическим и динамическим распределением памяти
5. Сравнение бок о бок - статическое и динамическое распределение памяти в табличной форме
6. Резюме

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме - Статическое и динамическое распределение памяти

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

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

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

Ссылка:

1.Каял, Сомнатх. «СОМНАТ КАЙАЛ». Разница между статическим распределением памяти и динамическим распределением памяти, 1 января 1970 года. Доступно здесь 
2.tutorialspoint.com. «Массивы в кл.» Смысл. Доступна здесь 
3.nareshtechnologies. Статическая память против динамической памяти | Руководство по языку C, Naresh i Technologies, 19 сентября 2016 г. Доступно здесь