LINUX.ORG.RU

История изменений

Исправление AZJIO, (текущая версия) :

На языке, на котором я пишу внутренние ресурсы практически все освобождаются автоматически, во первых создаются типа таблицы открытых ресурсов и закрытие сопровождается пробегом по этой таблице. Если структуры/списки структур открыты в функции, то добавляется скрытый флаг, вызывающий процесс освобождения памяти всех локальных ресурсов. Другое дело использование API, тут система может создать ресурс зарегистрированный в самой системе и язык не контролирует такие объекты. Если прога создаёт один объект в памяти, размером пол-мегабайта я раньше мог не обращать на это внимание, но в какой-то момент я начал очищать ресурсы, с момента когда стал писать проги с циклом создающие например сотню ресурсов, а другой на этой проге может создать миллион, мы же не знаем как другие применяет по минимуму или по максимуму, если прога позволяет сделать миллион объектов, то надо просто принять эту ситуацию. И я просто сделал список всех открываемых в цикле ресурсов, ну как это сделал автор языка для своих ресурсов. И когда прога завершается, то на выходе просто пробегаю по списку дескрипторов и по отдельным индивидуальным переменным с дескрипторами. Короче освобождаю всё.

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

Файловый дескриптор вообще всегда закрывай сразу. Если чел будет верить твоей проге как нормальным, то по привычке будет выдёргивать флешку думая что это не принесёт проблем, но с твоей прогой похоже будет сломаный файл.

Исправление AZJIO, :

На языке, на котором я пишу внутренние ресурсы практически все освобождаются автоматически, во первых создаются типа таблицы открытых ресурсов и закрытие сопровождается пробегом по этой таблице. Если структуры/списки структур открыты в функции, то добавляется скрытый флаг, вызывающий процесс освобождения памяти всех локальных ресурсов. Другое дело использование API, тут система может создать ресурс зарегистрированный в самой системе и язык не контролирует такие объекты. Если прога создаёт один объект в памяти, размером пол-мегабайта я раньше мог не обращать на это внимание, но в какой-то момент я начал очищать ресурсы, с момента когда стал писать проги с циклом создающие например сотню ресурсов, а другой на этой проге может создать миллион, мы же не знаем как другие применяет по минимуму или по максимуму, если прога позволяет сделать миллион объектов, то надо просто принять эту ситуацию. И я просто сделал список всех открываемых в цикле ресурсов, ну как это сделал автор языка для своих ресурсов. И когда прога завершается, то на выходе просто пробегаю по списку дескрипторов и по отдельным индивидуальным переменным с дескрипторами. Короче освобождаю всё.

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

Исправление AZJIO, :

На языке, на котором я пишу внутренние функции практически все освобождаются, во первых создаются типа таблицы открытых ресурсов и закрытие сопровождается пробег по этой таблице. Если структуры/списки структур открыты в функции, то добавляется скрытый флаг, вызывающий процесс освобождения памяти всех локальных ресурсов. Другой дело использование API, тут система может создать ресурс зарегистрированный в самой системе и язык не контролирует такие объекты. Если прога создаёт один объект в памяти, размером пол-мегабайта я раньше мог не обращать на это внимание, но в какой-то момент я начал очищать ресурсы, с момента когда стал писать проги с циклом создающие например сотню ресурсов, а другой на этой проге может создать миллион, мы же не знаем как другие применяет по минимуму или по максимуму, если прога позволяет сделать миллион объектов, то надо просто принять эту ситуацию. И я просто сделал список всех открываемых в цикле ресурсов, ну как это сделал автор языка для своих ресурсов. И когда прога завершается, то на выходе просто пробегаю по списку дескрипторов и по отдельным индивидуальным переменным с дескрипторами. Короче освобождаю всё.

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

Исходная версия AZJIO, :

На языке, на котором я пишу внутренние функции практически все освобождаются, во первых создаются типа таблицы открытых ресурсов и закрытие сопровождается пробег по этой таблице. Если структуры/списки структур открыты в функции, то добавляется скрытый флаг, вызывающий процесс освобождения памяти всех локальных ресурсов. Другой дело использование API, тут система может создать ресурс зарегистрированный в самой системе и язык не контролирует такие объекты. Если прога создаёт один объект в памяти, размером пол-мегабайта я раньше мог не обращать на это внимание, но в какой-то момент я начал очищать ресурсы, с момента когда стал писать проги с циклом создающие например сотню ресурсов, а другой на этой проге может создать миллион, мы же не знаем как другие применяет по минимуму или по максимуму, если прога позволяет сделать миллион объектов, то надо просто принять эту ситуацию. И я просто сделал список всех открываемых в цикле ресурсов, ну как это сделал автор языка для своих ресурсов. И когда прога завершается, то на выходе просто пробегаю по списку дескрипторов и по отдельным индивидуальным переменным с дескрипторами. Короче освобождаю всё.