С++, Возможно ли очистить память...

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

С++, Возможно ли очистить память...

Сообщение d3drm » 11.10.2005 (Вт) 16:06

Есть одна оооочень большая функция, которую я хотел бы использовать. Но при многократном использовании она пожирает очень много памяти. Функция должна работать в цикле, поэтому очистка очень важна. Боролся с ней как только мог, все равно жрет память. Вопрос в следующем: можно ли каким-нибудь образом очистить все ресурсы, которая заняла функция при исполнении?
ХЎ

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.10.2005 (Вт) 16:23

Динамическое выделение памяти используешь в функции везде, где можно?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.10.2005 (Вт) 17:08

Нет, нельзя. Если функция динамически выделяет память, и не очищает ее за собой, тебе это будет сложно определить.
Но если очень хочетсуя, Windows такую возможность предоставляет: HeapWalk.
Т.е. перед вызовом функции определяешь, какие регионы кучи сейчас задействованы, а после вызова проводишь повторную проверку и очищаешь все новые регионы....
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.10.2005 (Вт) 22:19

Если, конечно, это не твоя функция :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 11.10.2005 (Вт) 23:48

GSerg писал(а):Если, конечно, это не твоя функция :)


в каком смысле? в том плане, что она в исходном коде? это да, так и есть. но писал, как говорилось выше, не я.

MS писали, кто ж еще...
ХЎ

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 12.10.2005 (Ср) 10:57

Ну так в чем проблема?
Если это твоя функция исследуй ее на предмет багов...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 12.10.2005 (Ср) 19:27

ANDLL, так вот в том-то и дело, что уже всю перекопал, не могу понять в чем дело. Очистил все, что можно, все равно, гадина такая жрет память. Поэтому я и создал тему, что не знаю как с ней справится. А функция оооочень большая...
ХЎ

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 12.10.2005 (Ср) 20:38

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

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 13.10.2005 (Чт) 7:30

И еще можешь попробовать дефрагментацию heap'а. Используй HeapCompact после каждого вызова функции... Правда это не очищает память, но возможно дело именно в фарагментации кучи, а не в том, что не очищаются регионы?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 94

    TopList