/ / c + + витік пам'яті та пам'ять сміття - c + +, управління пам'яттю, витоку пам'яті

витік пам'яті c + + та пам'ять сміття - c + +, керування пам'яттю, витоку пам'яті

Я бачу це, якщо ми динамічно виділяємо пам'ятьв C ++, але не належним чином керувати ним, ми можемо мати смітну пам'ять, і ми можемо по суті отримати витік пам'яті, і зрозуміло, чому це відбувається. Тому що, наприклад, у нас є покажчик, який вказує на адресу пам'яті, і ми призначаємо цей покажчик на інший адресний простір перед тим, як звільнити поточну адресу, то це проблема. Але те, що я не розумію, полягає в тому, що, скажімо, у нас є погана програма, яка продовжує додавати пам'ять сміття, але як же все повертається до нормального, коли ми закриваємо програму. Якщо, наприклад, у нас є пам'ять сміття, яка була введена за допомогою програми C ++, то більше немає покажчика, що вказує на цю смітну пам'ять, і як після завершення програми вилучається вся сміттєва пам'ять? Як програма знає, як очистити пам'ять від сміття до завершення програми?

Відповіді:

3 для відповіді № 1

Немає пам'яті сміття, це не ваша програмаякий виділяє і звільняє пам'ять. Її основні ОС. Ви працюєте на вершині OS, використовуючи свої послуги. Кеп пам'яті та вільний магазин - це лише абстракція, яку надають ці служби (серед інших абстракцій таких файлів "я" є єдиним процесом, що працює в цьому унікальному ЦП "і т. Д.)


1 для відповіді № 2

У ОС Windows операційна система очищає будь-яку пам'ять, яка була виділена процесом. Таким чином, він в основному викидає простір, який був даний процес, не дбаючи про те, що він містить.