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

Vadim Zhunko
5136
Vadim Zhunko  
sergeev:

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

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

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

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

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

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

Vadim Zhunko
5136
Vadim Zhunko  

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

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

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

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

---
22643
---  
ок. приму во внимание.