LINUX.ORG.RU

Освобождение ресурсов и фатальные ошибки


0

0

Я привык освобождать все используемые ресурсы за собой: закрывать файлы, освобождать память и т.д. Но вот сейчас пишу довольно хитрое консольное приложение на C и возникла у меня мысль - а стоит ли правда всем этим заниматься, если при завершении приложения (просто вызвать err()) система все сделает сама, а проверка ошибок сильно усложняет код? Или все-таки, no-no-освобождай все сам?

anonymous

Освободить группу ресурсов скопом (в частности по завершению процесса) -- гораздо дешевле и оптимальней, чем в цикле по одному.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Я так же думаю. Но все-таки воспитание не позволяет :/

anonymous
()

Если, например, пишется менеджер памяти, как обёртка над malloc/free, то в нормальной ситуации освобождать буферы не надо, но надо предусмотреть функцию для освобождения и вызывать её в отладочной версии, чтобы программу можно было мониторить стандартными средствами вроде valgrind, и не разбираться, где настоящая утечка, а где by design. Думаю, с другими ресурсами так же. А вообще оптимизировать подобное стоит, как минимум, не сразу. Лучше пусть закрывает всё, потенциальных проблем будет меньше.

Legioner ★★★★★
()

>Но вот сейчас пишу довольно хитрое консольное приложение на C

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

fghj ★★★★★
()
Ответ на: комментарий от fghj

> как-то раз мне пришлось превращать "хитрое" приложение в разделяемую библиотеку Во, это уже весомый аргумент

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.