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

Discussion in 'WASM.WIN32' started by vovka, Jul 26, 2006.

  1. vovka

    vovka New Member

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

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

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

    Спасибо!
     
  2. alpet

    alpet Александр

    Blog Posts:
    0
    Joined:
    Sep 21, 2004
    Messages:
    1,221
    Location:
    Russia
    vovka
    Отладчик рулит - не мешает посмотреть, действительно ли освобождается память.
    По идее MSVS начиная с 2003, сама обнаруживает утечки памяти. Более четкой их локализация становится, если заменить оператор new на макрос DEBUG_NEW.
     
  3. AsmGuru62

    AsmGuru62 Member

    Blog Posts:
    0
    Joined:
    Sep 12, 2002
    Messages:
    689
    Location:
    Toronto
    В серверном приложении скорее всего "рулит" лог файл. Отладчик, наоборот может нарушать картину.
     
  4. Son of God

    Son of God New Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2005
    Messages:
    125
    Посмотри каким-нибудь верифаером, например BoundsChecker.
     
  5. Quantum

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

    Blog Posts:
    0
    Joined:
    Jan 6, 2003
    Messages:
    3,143
    Location:
    Ukraine
    vovka
    Нужно использовать мультитрединговый CRT. Проверьте в настройках проекта эту опцию.
     
  6. Unhandled_Exception

    Unhandled_Exception New Member

    Blog Posts:
    0
    Joined:
    Jul 12, 2006
    Messages:
    5
    Попробуй этот плагин:
    http://www.deleaker.com/
     
  7. Ms Rem

    Ms Rem New Member

    Blog Posts:
    0
    Joined:
    Apr 17, 2005
    Messages:
    1,057
    Location:
    С планеты "Земля"
    vovka
    Вопрос - как часто выделяется/освобождается память. В каких пределах варьируется размер выделяемого блока, и сколько памяти выделяется в максимуме всего.
    При неблагоприятных сочетаниях этих параметров, возможна утечка памяти из за ее фрагментации. И с этим иногда становиться почти невозможно бороться.
     
  8. YoungBastard

    YoungBastard New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2005
    Messages:
    231
    Location:
    Russia
    vovka

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

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

    Jesus New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2006
    Messages:
    1
    delete[] var; var = 0;
     
  10. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    YoungBastard
    Ну-ну. Так же, как IDE отвлекает от кода своими подсветками, autocomplete'ами и прочими фенечками.
     
  11. varnie

    varnie New Member

    Blog Posts:
    0
    Joined:
    Jan 2, 2005
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    возможно, лучше будет реализовать свой менеджер кучи и самостоятельно следить за всеми аллокациями.