Що таке динамічне виділення пам’яті?

Динамічне виділення пам’яті, також зване розподілом пам’яті на основі купи, являє собою тип управління пам’яттю, який різко контрастує зі статичним розподілом пам’яті. При розподілі динамічної пам’яті програміст повідомляє комп’ютера точно, скільки пам’яті виділяється для кожної програми і як довго утримувати ці дані в пам’яті. Це вирішує багато проблем, що виникають при розподілі статичної пам’яті, наприклад, надмірне використання пам’яті і зупинених програм. Хоча воно вирішує багато проблем, якщо програміст забуває повідомляти пам’яті про дампі, тоді динамічна пам’ять може стати проблемою.
Комп’ютери за замовчуванням використовують статичний розподіл пам’яті. Це означає, що пам’ять зберігається в програмах, коли вони використовуються, навіть якщо програма більше не використовується або якщо утримувана пам’ять стає небезпечною або перешкоджає продуктивності. Наприклад, якщо користувач перестає запускати програму, яка займає 2 мегабайта (МБ) на машині з 3 МБ, а другий програмі потрібно ще 2 МБ, друга програма не працюватиме. Це пов’язано з тим, що на комп’ютері недостатньо пам’яті для іншої програми.

При розподілі статичної пам’яті користувач або програміст не може вказати обсяг пам’яті, який він чи вона хоче зберегти, а також програміст не може повідомити статичної пам’яті про скидання пам’яті, щоб звільнити ресурси. Саме тому просунуті користувачі часто використовують динамічний розподіл пам’яті. Програміст здатний контролювати все, що стосується пам’яті, в тому числі, як довго утримувати ресурси.

Наприклад, програміст може встановити динамічний розподіл пам’яті для зберігання тільки на 1 МБ або менше, що дозволить заощадити достатню системну пам’ять, щоб інші програми могли відкриватися. Це можна зробити, тому що статична пам’ять зазвичай відноситься до всього що відноситься до програми, в той час як динамічна пам’ять дозволяє програмістам встановлювати її з меншим значенням, яке містить деякі дані, але не всі. У той же час статична пам’ять як і раніше буде необхідна, і її можна встановити в цій схемі розміщення.

Потенційна проблема з динамічним розподілом пам’яті полягає в тому, що динамічна пам’ять може повністю заповнитися, якщо програміст забуде встановити значення часу. Якщо значення часу не встановлено, на відміну від статичної пам’яті, яка в кінцевому підсумку звільнить пам’ять, динамічна пам’ять буде утримувати інформацію. Якщо у програми є додаток для видалення сміття, то більшість з них активується через деякий час, щоб очистити пам’ять. Тому краще всього встановити значення часу для розподілу пам’яті.

Ссылка на основную публикацию