mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-18 15:10:33 +05:00
21948: EDF SMESH : Memory is not freed when deleting a mesh
Make clear free as much as possible memory
This commit is contained in:
parent
fa38ad0b49
commit
585362053b
@ -2656,6 +2656,13 @@ SMDS_Mesh::~SMDS_Mesh()
|
|||||||
myNodeIDFactory->ReleaseID(node->GetID(), node->getVtkId());
|
myNodeIDFactory->ReleaseID(node->GetID(), node->getVtkId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
myGrid->Delete();
|
||||||
|
|
||||||
|
delete myNodePool;
|
||||||
|
delete myVolumePool;
|
||||||
|
delete myFacePool;
|
||||||
|
delete myEdgePool;
|
||||||
|
delete myBallPool;
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -2688,50 +2695,56 @@ void SMDS_Mesh::Clear()
|
|||||||
myElementIDFactory->Clear();
|
myElementIDFactory->Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
SMDS_ElemIteratorPtr itv = elementsIterator();
|
// SMDS_ElemIteratorPtr itv = elementsIterator();
|
||||||
while (itv->more())
|
// while (itv->more())
|
||||||
{
|
// {
|
||||||
SMDS_MeshElement* elem = (SMDS_MeshElement*)(itv->next());
|
// SMDS_MeshElement* elem = (SMDS_MeshElement*)(itv->next());
|
||||||
SMDSAbs_ElementType aType = elem->GetType();
|
// SMDSAbs_ElementType aType = elem->GetType();
|
||||||
switch (aType)
|
// switch (aType)
|
||||||
{
|
// {
|
||||||
case SMDSAbs_0DElement:
|
// case SMDSAbs_0DElement:
|
||||||
delete elem;
|
// delete elem;
|
||||||
break;
|
// break;
|
||||||
case SMDSAbs_Edge:
|
// case SMDSAbs_Edge:
|
||||||
myEdgePool->destroy(static_cast<SMDS_VtkEdge*>(elem));
|
// myEdgePool->destroy(static_cast<SMDS_VtkEdge*>(elem));
|
||||||
break;
|
// break;
|
||||||
case SMDSAbs_Face:
|
// case SMDSAbs_Face:
|
||||||
myFacePool->destroy(static_cast<SMDS_VtkFace*>(elem));
|
// myFacePool->destroy(static_cast<SMDS_VtkFace*>(elem));
|
||||||
break;
|
// break;
|
||||||
case SMDSAbs_Volume:
|
// case SMDSAbs_Volume:
|
||||||
myVolumePool->destroy(static_cast<SMDS_VtkVolume*>(elem));
|
// myVolumePool->destroy(static_cast<SMDS_VtkVolume*>(elem));
|
||||||
break;
|
// break;
|
||||||
case SMDSAbs_Ball:
|
// case SMDSAbs_Ball:
|
||||||
myBallPool->destroy(static_cast<SMDS_BallElement*>(elem));
|
// myBallPool->destroy(static_cast<SMDS_BallElement*>(elem));
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
myCells.clear();
|
myVolumePool->clear();
|
||||||
myCellIdVtkToSmds.clear();
|
myFacePool->clear();
|
||||||
//myCellIdSmdsToVtk.clear();
|
myEdgePool->clear();
|
||||||
|
myBallPool->clear();
|
||||||
|
|
||||||
|
clearVector( myCells );
|
||||||
|
clearVector( myCellIdVtkToSmds );
|
||||||
|
|
||||||
SMDS_NodeIteratorPtr itn = nodesIterator();
|
SMDS_NodeIteratorPtr itn = nodesIterator();
|
||||||
while (itn->more())
|
while (itn->more())
|
||||||
{
|
{
|
||||||
SMDS_MeshNode *node = (SMDS_MeshNode*)(itn->next());
|
SMDS_MeshNode *node = (SMDS_MeshNode*)(itn->next());
|
||||||
node->SetPosition(SMDS_SpacePosition::originSpacePosition());
|
node->SetPosition(SMDS_SpacePosition::originSpacePosition());
|
||||||
myNodePool->destroy(node);
|
//myNodePool->destroy(node);
|
||||||
}
|
}
|
||||||
myNodes.clear();
|
myNodePool->clear();
|
||||||
|
clearVector( myNodes );
|
||||||
|
|
||||||
list<SMDS_Mesh*>::iterator itc=myChildren.begin();
|
list<SMDS_Mesh*>::iterator itc=myChildren.begin();
|
||||||
while(itc!=myChildren.end())
|
while(itc!=myChildren.end())
|
||||||
(*itc)->Clear();
|
(*itc)->Clear();
|
||||||
|
|
||||||
myModified = false;
|
myModified = false;
|
||||||
|
myModifTime++;
|
||||||
xmin = 0; xmax = 0;
|
xmin = 0; xmax = 0;
|
||||||
ymin = 0; ymax = 0;
|
ymin = 0; ymax = 0;
|
||||||
zmin = 0; zmax = 0;
|
zmin = 0; zmax = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user