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

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

  1. vovka

    vovka New Member

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

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

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

    Спасибо!
     
  2. alpet

    alpet Александр

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

    AsmGuru62 Member

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

    Son of God New Member

    Публикаций:
    0
    Посмотри каким-нибудь верифаером, например BoundsChecker.
     
  5. Quantum

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

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

    Unhandled_Exception New Member

    Публикаций:
    0
    Попробуй этот плагин:
    http://www.deleaker.com/
     
  7. Ms Rem

    Ms Rem New Member

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

    YoungBastard New Member

    Публикаций:
    0
    vovka

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

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

    Jesus New Member

    Публикаций:
    0
    delete[] var; var = 0;
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    YoungBastard
    Ну-ну. Так же, как IDE отвлекает от кода своими подсветками, autocomplete'ами и прочими фенечками.
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    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
    возможно, лучше будет реализовать свой менеджер кучи и самостоятельно следить за всеми аллокациями.