2015-01-12 2 views
0

Я работаю с распределением памяти и предполагаю, что выделение не удалось. Должен ли я освобождать всю память в программе до выхода? Действительно ли это необходимо? Можете выйти() быть достаточно?Правильное программирование в c

И если мне действительно нужно освободить всю память в программе, предположим, что у меня есть большая программа с большим количеством информации в ней. Как я могу это сделать?

+0

Когда вы выходите, все освобождается автоматически. – Barmar

ответ

0

В большинстве операционных систем вся память, принадлежащая процессу, освобождается после выхода из этого процесса.

0

Должен ли я освобождать всю память в программе до моего выхода? Это это действительно необходимо? Может выйти() будет достаточно?

Только вам нужно free() память, которая была успешно выделена.

free() принимает указатель, который был возвращен на malloc()realloc() и calloc() поэтому вам нужно передать этот указатель на free(), если это NULL, то никакой операции не будет сделано free() поэтому нет необходимости беспокоиться о невозможности выделения.

Да exit() достаточно, потому что, когда вы выходите из всей выделенной памяти, автоматически освобождается во многих операционных системах.

0

Ну, это зависит.

Если вы хотите, чтобы продолжал после того, как определенное выделение было провалено, в конце [или после того, как выделение памяти больше не используется, в зависимости от того, что было раньше], вы должны освободить() выделенную память.

Ото, если вы принимаете жесткий путь, делая заявку на выходе после движущийся прямо вперед сбоя выделения, то вы можете избежать свободно ИНГ часть.

Смежные вопросы