Re[4]: Крашит в дебрях std при работе с ofstream
От: Sheridan Россия  
Дата: 17.12.18 16:30
Оценка:
Здравствуйте, Igore, Вы писали:

I>[ccode]
I>47        {
I>48            delete m_dynamicMesh;
I>49            m_dynamicMesh = nullptr;
I>

I>Теперь нужен деструктор m_dynamicMesh, и removeBlock(у тебя там случайно delete this не происходит)?

CDynamicMesh::CDynamicMesh(eing::graphic::world::CBlock *parentBlock) :
    m_parentBlock(parentBlock),
    m_dynamicModel(nullptr)
{
    m_vertexBuffer = new Urho3D::VertexBuffer(EING_ST->graphic()->context());
    m_indexBuffer  = new Urho3D::IndexBuffer(EING_ST->graphic()->context());
    m_geometry     = new Urho3D::Geometry(EING_ST->graphic()->context());
    m_vertexBuffer->SetShadowed(true);
    m_indexBuffer->SetShadowed(true);
    m_podElements.Push(Urho3D::VertexElement(Urho3D::TYPE_VECTOR3, Urho3D::SEM_POSITION));
    m_podElements.Push(Urho3D::VertexElement(Urho3D::TYPE_VECTOR3, Urho3D::SEM_NORMAL));
    dynamicModel()->SetNumGeometries(1);
    addBlock(m_parentBlock);
}


CDynamicMesh::~CDynamicMesh()
{
    EING_LOG_DBG_POINT;
    if(m_dynamicModel) { EING_ST->graphic()->physicsWorld()->RemoveCachedGeometry(m_dynamicModel); } // Это urho3d, не смотрел что там происходит
    delete m_vertexBuffer;
    delete m_indexBuffer;
    delete m_geometry;
    m_podElements.Clear();
    if(m_dynamicModel) { delete m_dynamicModel; } // Это urho3d объект, не мой
    EING_LOG_DBG_POINT;
}

void CDynamicMesh::addBlock(eing::graphic::world::CBlock *block)
{
    m_blocks.push_back(block);
    recalculate();
}

void CDynamicMesh::removeBlock(eing::graphic::world::CBlock *block)
{
    m_blocks.remove(block);
    if(block == m_parentBlock)
    {
        m_parentBlock = m_blocks.empty() ? nullptr : m_blocks.front();
    }
    recalculate();
}

void CDynamicMesh::recalculate()
{
    if(m_blocks.size() && m_parentBlock)
    { ... }
}


Вообще я склоняюсь к мысли что это действительно не логгер, а что то не так с умными указателями urho3d
Matrix has you...
Отредактировано 17.12.2018 16:35 Sheridan . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.