Помогите понять - утечка памяти?

Тема в разделе "WASM.WIN32", создана пользователем vovka, 26 июл 2006.

  1. vovka

    vovka New Member

    Публикаций:
    0
    Регистрация:
    23 май 2006
    Сообщения:
    45
    Прога на С++ (MSVC++) работает с сетью.
    память выделяется с помощью new!
    Прога каждые 10 сек конектится к серваку чего-то забирает.
    Вроде все созданные var = new char[num] удаляю delete [] var
    Так ведь?!

    Но на в процессах память моего приложения каждые 10 сек растёт на 64К

    Это у меня утечка памяти (т.е. моя вина как программиста) или я нетак понимаю систему!?

    Спасибо!
     
  2. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    vovka
    Отладчик рулит - не мешает посмотреть, действительно ли освобождается память.
    По идее MSVS начиная с 2003, сама обнаруживает утечки памяти. Более четкой их локализация становится, если заменить оператор new на макрос DEBUG_NEW.
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    В серверном приложении скорее всего "рулит" лог файл. Отладчик, наоборот может нарушать картину.
     
  4. Son of God

    Son of God New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2005
    Сообщения:
    125
    Посмотри каким-нибудь верифаером, например BoundsChecker.
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    vovka
    Нужно использовать мультитрединговый CRT. Проверьте в настройках проекта эту опцию.
     
  6. Unhandled_Exception

    Unhandled_Exception New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    5
    Попробуй этот плагин:
    http://www.deleaker.com/
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    vovka
    Вопрос - как часто выделяется/освобождается память. В каких пределах варьируется размер выделяемого блока, и сколько памяти выделяется в максимуме всего.
    При неблагоприятных сочетаниях этих параметров, возможна утечка памяти из за ее фрагментации. И с этим иногда становиться почти невозможно бороться.
     
  8. YoungBastard

    YoungBastard New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2005
    Сообщения:
    231
    Адрес:
    Russia
    vovka

    короче, Вовка, все просто, идешь вот сюда: http://rsdn.ru/article/vcpp/leaks.xml. Читаешь, медитируешь, применяешь свои знания на практике и радуешься... =)

    зы. На практике, всякие там bounds checker и т.д. и п.т. только затрудняют процесс нахождения утечки, т.к. тот же чекер для других нужд расчитан, а разработчики CRT все уже давным давно за нас сделали, просто надо уметь это пользовать. Мне эта статья очень пригодилась
     
  9. Jesus

    Jesus New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2006
    Сообщения:
    1
    delete[] var; var = 0;
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    YoungBastard
    Ну-ну. Так же, как IDE отвлекает от кода своими подсветками, autocomplete'ами и прочими фенечками.
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Unhandled_Exception,
    попробовал я этот плагин Deleaker. показал он мне значит утечки памяти в моем проекте. я решил все же докопаться до истины, взял, и прогнал этот плагин при дебаге на другом проекте (взял исходный "нулевой" пример работы с OpenGL, который шел с поставкой DevC++ компилера, который я в своем коде за основу работы с OpenGL взял). и что же вы думаете, Deleaker мне и тут показал утечки памяти!!! причем, всего лишь на одну утечку меньше, если так можно выразиться в этом контексте. в моем проекте он показывал 5 утечек, а здесь 4, причем размер "утекших" данных в четырех утечкам один в один совпадает и с моими.
    я не могу поверить просто, что в том исходном примере, что шел с DevC++ компилером могут быть утечки.
    если угодно, могу приаттачить этот простенький сорец для пущей убедительности.

    YoungBastard,
    попробовал тот способ, описанный по вашему указанному линку, все сделал как там описано, но на вкладке Debug окна Output моей MS Visual Studio .Net 2003 абсолютно ничего не выводится. кто знает, в чем дело?

    ps: пардон за поднятие старой темы
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    возможно, лучше будет реализовать свой менеджер кучи и самостоятельно следить за всеми аллокациями.