Urho3D
GameDev.ru / Сообщества / Urho3D / Форум / Утечка памяти VariantMap

Утечка памяти VariantMap

Поделиться
nicks80Пользовательwww20 окт. 201721:30#0
main(...)
{
    VariantMap        m_EngineParameters_;
    m_EngineParameters_["tralalala"] = true; //// после добавления это строки вываливается в конце завершения программы окно   
    return 1;
}


Debug assertion failed
file ..minkernel/crts/ucrt/ /debug_heart.cpp
expression _CrtIsValidHeapPointer(block)

я так понял это что-то с высвобождением памяти из разных модулей.

nicks80Пользовательwww20 окт. 201722:27#1
    ~HashMap()
    {
        Clear();
        FreeNode(Tail());
        AllocatorUninitialize(allocator_);
        delete[] ptrs_;  .. <-———————— ругается на повторное удаления указателя как я понял тут
    }
nicks80Пользовательwww21 окт. 201713:01#2
у меня вываливается и в чем дело не пойму.
притом весь движок работает нормально. только с этим проблема.

Правка: 21 окт. 2017 13:06

-Eugene-Постоялецwww26 окт. 20170:42#3
nicks80
Минимальный пример с ошибкой?
Используешь DLL?
nicks80Пользовательwww26 окт. 20171:11#4
Да dll так и не разобрался в чем.
больше ничто не выкидывает.
и gcc и vc одна фигня.
-Eugene-Постоялецwww26 окт. 20171:22#5
nicks80
Надеюсь, не статически линкуешь рантайм?
nicks80Пользовательwww26 окт. 20171:32#6
создаю lib его линкеру пихаю. в папку с exe кидаю dll
#-------------------------------------------------
#
# Project created by QtCreator 2017-02-02T14:51:03
#
#-------------------------------------------------

QT       += core gui
QT       += network
QT       += xml
QT *= xml


#DEFINES += URHO3D_WIN32_CONSOLE

#urho3d
win32-g*{
INCLUDEPATH += p:/dsc/libs/Urho3D/BuildMinGW32/include \
               p:/dsc/libs/Urho3D/BuildMinGW32/include/Urho3D/ThirdParty
}
win32-msvc* {
INCLUDEPATH += p:/dsc/libs/Urho3D/BuildVC2015/include \
               p:/dsc/libs/Urho3D/BuildVC2015/include/Urho3D/ThirdParty
}


#LIBS += -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
#LIBS += -ldbghelp -limm32 -lversion -lwinmm -lws2_32
#LIBS += -lopengl32 -lgdiplus

win32-g* {
#LIBS += p:\dsc\libs\Urho3d\BuildMinGW32\lib\libUrho3D.dll.a
#LIBS +=-lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex
}
win32-msvc* {
LIBS += p:\dsc\libs\Urho3d\BuildVC2015\lib\Urho3D.lib
#LIBS +=-luser32 -lkernel32
}





CONFIG( Debug ) {
  win32-g*  {
      LIBS += p:\dsc\dlfx\trunk\out\MinGW32bitDebug\debug\libpawn.a
  }
  win32-msvc* {
       LIBS += p:\dsc\dlfx\trunk\out\MSVC201564bitDebug\debug\pawn.lib
  }
} else {
  win32-g*  {
      LIBS += p:\dsc\dlfx\trunk\out\MinGW32bitDebug\release\libpawn.a
  }
  win32-msvc* {
       LIBS += p:\dsc\dlfx\trunk\out\MSVC201564bitRelease\release\pawn.lib
  }
}

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = dlfx
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

INCLUDEPATH += src/
#INCLUDEPATH += src/qgl/QGLViewer/

INCLUDEPATH += p:/dsc/libs/Urho3D/build/include         \
               p:/dsc/libs/Urho3D/build/include/Urho3D/ThirdParty

#INCLUDEPATH += p:\dsc\libs\Urho3D\Source\ThirdParty


SOURCES += main.cpp\
        fxmain.cpp \
    src/stdafx.cpp \
    src/misc/timeutil.cpp \
    src/timeline/TimeLine.cpp \
    src/timeline/TimeLineMgr.cpp \
    src/timeline/TimeLineVScroll.cpp \
    src/timeline/TimeLineRGB.cpp \
    src/timeline/TimeLineValues.cpp \
    src/theme/themebase.cpp \
    src/scene/Scene.cpp \
    src/scene/ScenesMgr.cpp \
    src/scene/ScenesEditor.cpp \
    src/dev/DevDMXUniversal.cpp \
    src/io/fxio.cpp \
    src/scene/ScenesEditorCmd.cpp \
    src/script/ScriptEdit.cpp \
    src/script/ScriptsEditMgr.cpp \
    src/core/ICmd.cpp \
    src/timeline/TimeLineHScroll.cpp \
    src/project/Project.cpp \
    src/script/ScriptHighlighter.cpp \
    src/timeline/TimeLineDataOutput.cpp \
    src/dev/Device.cpp \
    src/dev/DevicesFabric.cpp \
    src/dev/DevicesWindow.cpp \
    src/dev/DeviceParam.cpp \
    src/dev/DevicesContainer.cpp \
    src/io/sockets/fxISocketAdapter.cpp \
    src/io/sockets/fxSocketAdapter.cpp \
    src/io/sockets/fxClientSocketAdapter.cpp \
    src/dev/DeviceParamsMgr.cpp \
    src/dev/DevicesMgr.cpp \
    src/project/fxprojectfile.cpp \
    src/pawn/user/PawnCompile.cpp \
    src/3d/fx3dwindow.cpp \
    src/music/fxmusic.cpp \
    src/timeline/fxTimeLineSon.cpp \
    src/mp3d/mp3d.cpp \
    src/mp3d/bitstream.c \
    src/mp3d/buffers.c \
    src/mp3d/dct32.c \
    src/mp3d/dequant.c \
    src/mp3d/dqchan.c \
    src/mp3d/huffman.c \
    src/mp3d/hufftabs.c \
    src/mp3d/imdct.c \
    src/mp3d/mp3dec.c \
    src/mp3d/mp3tabs.c \
    src/mp3d/polyphase.c \
    src/mp3d/scalfact.c \
    src/mp3d/stproc.c \
    src/mp3d/subband.c \
    src/mp3d/trigtabs.c \
    src/3d/fx3dqtapplication.cpp \
    src/3d/Urho3DQtCentralWidget.cpp \
    src/3d/Urho3DQtMainWindow.cpp \
    src/music/AudioOut.cpp \
    src/audio/DlaFile.cpp \
    src/mat/fft.cpp \
    src/mat/fftf32.c


HEADERS  += fxmain.h \
    src/stdafx.hpp \
    src/misc/timeutil.hpp \
    src/timeline/TimeLine.hpp \
    src/timeline/TimeLineMgr.hpp \
    src/timeline/TimeLineVScroll.hpp \
    src/timeline/TimeLineRGB.hpp \
    src/timeline/TimeLineValues.hpp \
    src/theme/themebase.hpp \
    src/scene/ScenesMgr.hpp \
    src/scene/Scene.hpp \
    src/scene/ScenesEditor.hpp \
    src/dev/DevDMXUniversal.hpp \
    src/scene/SceneeEditorCmd.hpp \
    src/script/ScriptEdit.hpp \
    src/script/ScriptsEditMgr.hpp \
    src/core/ICmd.hpp \
    src/timeline/TimeLineHScroll.hpp \
    src/project/Project.hpp \
    src/script/ScriptHighlighter.hpp \
    src/timeline/TimeLineDataOutput.hpp \
    src/io/fxIO.hpp \
    src/dev/Device.hpp \
    src/dev/DevicesFabric.hpp \
    src/dev/DevicesWindow.hpp \
    src/dev/DeviceParam.hpp \
    src/dev/DevicesContainer.hpp \
    src/dev/Device_Def.hpp \
    src/io/sockets/fxISocketAdapter.hpp \
    src/io/sockets/fxSocketAdapter.hpp \
    src/io/sockets/fxClientSocketAdapter.hpp \
    src/dev/DeviceParamsMgr.hpp \
    src/dev/DevicesMgr.hpp \
    src/project/fxprojectfile.hpp \
    src/pawn/user/PawnCompile.hpp \
    src/3d/fx3dwindow.hpp \
    src/music/fxmusic.hpp \
    src/timeline/fxTimeLineSon.hpp \
    src/mp3d/assembly.h \
    src/mp3d/coder.h \
    src/mp3d/mp3common.h \
    src/mp3d/mp3d.hpp \
    src/mp3d/mp3dec.h \
    src/mp3d/statname.h \
    src/mp3d/stypes.h \
    src/3d/fx3dqtapplication.hpp \
    src/3d/Urho3DQtCentralWidget.h \
    src/3d/Urho3DQtMainWindow.h \
    src/music/AudioOut.hpp \
    src/audio/DlaFile.hpp \
    src/mat/fft.hpp \
    src/mat/fftf32.h

STATECHARTS +=

DISTFILES += \
    modeling/dlfx2.qmodel \
nicks80Пользовательwww26 окт. 20171:39#7
я понимаю что эта проблема решаема и связана наверно с вызовом механизмов выделения и высвобождения памяти из разных модулей. но я давно не прогал и решил оставить это дело на потом. т.к. пока до релиза далеко.
-Eugene-Постоялецwww26 окт. 20171:40#8
nicks80
Ну в общем симптомы похожи на конфликт рантаймов С++ в DLL. Проще всего было бы не использовать DLL Urho, а линковать статически.
По честному - смотреть, у кого какие зависимости и точно ли все DLL и exe грузят один и тот же рантайм.
Я вот например не пользовал очень давно Qt-проекты и не очень доверяю им. CMake тащит.

Правка: 26 окт. 2017 1:41

nicks80Пользовательwww26 окт. 20171:45#9
я собирал urho и свой проект одним компилятором.
а вот qt поставляется с собранными dll может из-за этого?
...
да потом статически соберу пока чтобы быстро собирал сделал.

nicks80Пользовательwww26 окт. 201717:55#10
я же привел код

main(...)
{
    VariantMap        m_EngineParameters_;
    m_EngineParameters_["tralalala"] = true; //// после добавления это строки вываливается в конце завершения программы окно   
    return 1;
}

    ~HashMap()
    {
        Clear();
        FreeNode(Tail());
        AllocatorUninitialize(allocator_);
        delete[] ptrs_;  .. <-———————— ругается на повторное удаления указателя как я понял тут
    }


Притом запуская полностью программу с кучей объектов в сцене все работает отлично если закоментить в hashmap delete [] ptrs_; то вся программа пашет на ура.    больше ни в каком месте ничего не вываливается.

-Eugene-Постоялецwww26 окт. 201718:12#11
nicks80
> Притом запуская полностью программу с кучей объектов в сцене все работает
> отлично если закоментить в hashmap delete [] ptrs_; то вся программа пашет на
> ура. 
Да ничего удивительного. Все твои кучи объектов аллоцируются изнутри Urho DLL.
Добавь объект через AddChild(MakeShared<Node>(context_)), и все так же завалится.

/ Форум / Urho3D - игровой движок / ЗАДАВАЙТЕ ВОПРОСЫ

2001—2017 © GameDev.ru — Разработка игр