Утечка памяти в osgearth

Моя цель - использовать библиотеку OSGEarth для создания проекта MFC, который может отображать модель "openstreetmap.earth". Я закончил это и могу видеть землю. Но каждый раз, когда я закрываю проект, окно вывода в vs2015 говорит, что в программе есть утечки памяти.

Вот вывод окна:

Detected memory leaks!
Dumping objects ->
{306240} normal block at 0x00000000076902F0, 16 bytes long.
Data: <0,i             > 30 2C 69 07 00 00 00 00 00 00 00 00 00 00 00 00 
{306239} normal block at 0x0000000007692C30, 9 bytes long.
Data: <Pragma:  > 50 72 61 67 6D 61 3A 20 00 
{303648} normal block at 0x0000000007693040, 16 bytes long.
Data: < 5i             > 90 35 69 07 00 00 00 00 00 00 00 00 00 00 00 00 
{303647} normal block at 0x0000000007693590, 9 bytes long.
Data: <Pragma:  > 50 72 61 67 6D 61 3A 20 00 
{301180} normal block at 0x00000000076938B0, 16 bytes long.
 Data: <`8i             > 60 38 69 07 00 00 00 00 00 00 00 00 00 00 00 00 
{301179} normal block at 0x0000000007693860, 9 bytes long.
 Data: <Pragma:  > 50 72 61 67 6D 61 3A 20 00 
{297799} normal block at 0x0000000007691060, 16 bytes long.
 Data: <  i             > 10 10 69 07 00 00 00 00 00 00 00 00 00 00 00 00 

Я изучил программу и обнаружил, что при удалении этого кода m_Model = osgDB::readNodeFile(m_strModelName); утечек памяти больше нет.

void COSGEarth::InitSceneGraph(void)
{
    // Init the main Root Node/Group
    m_Root = new osg::Group;
    // Load the Model from the model name, 
    //delete below line, no memory leak
    m_Model = osgDB::readNodeFile(m_strModelName);
    if (!m_Model) return;

    // Optimize the model
    osgUtil::Optimizer optimizer;
    optimizer.optimize(m_Model.get());
    optimizer.reset();

    // Add the model to the scene
    m_Root->addChild(m_Model.get());

}

Я определил m_Model как osg::ref_ptr<osg::Node> m_Model, Это интеллектуальный указатель.

Почему возникают утечки памяти и как я могу решить эту проблему?

Вот исходный код: http://bbs.osgchina.org/forum.php?mod=attachment&aid=NzIwNnwzZWYxZDIyZjlhOGY1MWFjZjhiNGFiMWYwMTc5YmJlNXwxNTEyMzc5ODE2&request=yes&_f=.zip

1 ответ

Я считаю, что эти "утечки" являются ложными срабатываниями. Обратитесь к этой теме, которая объясняет, почему:

http://forum.openscenegraph.org/viewtopic.php?t=1475

Другие вопросы по тегам