Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 29

 
sergeev:

при закрытии хендла память (которая была выделена сверх указанного в CreateFileMapping) разве не возвращается взад?
Освобождается. Но это в конце. Надо экономить память в процессе работы.
 
в конце чего? конце винды или закрытия хендла или закрытия приложения?
 
sergeev:
в конце чего? конце винды или закрытия хендла или закрытия приложения?
Любой на выбор. Всё же это конец.
 
а, ну если при закрытии хендла, то я так никакой утечки памяти не будет, это обычная работа винды - свобождать память при удалении хендла
 

Как-то это неправильно - освобождать память в процессе работы закрытием дескриптора.

Память надо освобождать без надежды на Виндос.

 
:) а как же иначе её освобождать то? все что выделил, то и удалил. в MSDN при работе с Mapping ничего не скзано про ручное освобождение памяти перед закрытие хендла
 
sergeev:
:) а как же иначе её освобождать то? все что выделил, то и удалил. в MSDN при работе с Mapping ничего не скзано про ручное освобождение памяти перед закрытие хендла
Так, я не про после закрытия дескриптора. Во время работы с памятью динамически изменять размер её выделения. Но это тоже не надо делать постоянно. Постоянное перевыделение занимает время.
 

Вадим. что конкретно мы разбираем?

я нашел два способа расширить память. Вы считаете что в обоих случаях будут проблемы с утечкой памяти?

 

Если все дескрипторы закрываются, утечек не будет. Утечка, это, когда программа выгрузилась, но оставила занятыми ресурсы.

Но возможны проблемы с черезмерно большим потреблением памяти. Сам недавно на такое попался. Подключил не тот класс для работы с таймсериями. Подключил, который индексирует тики посекундно. Стал таким классом работать с месячными барами. Всю память сожрало за 30 секунд. Это один из возможных вариантов. Надо такое отслеживать и предупреждать.

Второй вариант, когда программе понадобилось много памяти, например 1000 Мб, но не надолго. Если её не освободить, то остальным программам останется на эти 1000 Мб меньше пока Ваша программа не выгрузится.

Одним словом, надо отслеживать потребление ресурсов.

 
ок. приму во внимание.
Причина обращения: