Ignore:
Timestamp:
12/01/21 16:52:24 (3 years ago)
Author:
ymipsl
Message:

tracking memory leak
Elements, views, and connectors are now managed with shared pointer.
YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/grid_local_connector.cpp

    r1960 r2267  
    88{ 
    99  
    10   CGridLocalConnector::CGridLocalConnector(const std::vector<CLocalConnector*>& elementsConnector) : elementsConnector_(elementsConnector) 
     10  CGridLocalConnector::CGridLocalConnector(const std::vector<shared_ptr<CLocalConnector>>& elementsConnector) : elementsConnector_(elementsConnector) 
    1111  { 
    1212    srcSize_=1 ; 
     
    1616  }  
    1717 
    18   CGridLocalConnector::CGridLocalConnector(CGridLocalElements* parent, CElementView::type srcType, CElementView::type dstType, bool withMask) 
     18  CGridLocalConnector::CGridLocalConnector(shared_ptr<CGridLocalElements> parent, CElementView::type srcType, CElementView::type dstType, bool withMask) 
    1919  { 
    20     CGridLocalView* srcView=parent->getView(srcType) ; 
    21     CGridLocalView* dstView=parent->getView(dstType) ; 
     20    shared_ptr<CGridLocalView> srcView=parent->getView(srcType) ; 
     21    shared_ptr<CGridLocalView> dstView=parent->getView(dstType) ; 
    2222 
    23     vector<CLocalView*> srcViews = srcView->getViews() ;  
    24     vector<CLocalView*> dstViews = dstView->getViews() ; 
     23    vector<shared_ptr<CLocalView>> srcViews = srcView->getViews() ;  
     24    vector<shared_ptr<CLocalView>> dstViews = dstView->getViews() ; 
    2525     
    26     vector<CLocalElement*>& elements = parent->getElements(); 
     26    vector<shared_ptr<CLocalElement>>& elements = parent->getElements(); 
    2727    for(auto element : elements) elementsConnector_.push_back(element->getConnector(srcType, dstType)) ; 
    2828    srcSize_=1 ; 
     
    3333    if (parent->hasLocalMask() && withMask) 
    3434    { 
    35       vector<CLocalConnector*> elementsConnector ; 
     35      vector<shared_ptr<CLocalConnector>> elementsConnector ; 
    3636      for(auto element : elements) elementsConnector.push_back(element->getConnector(CElementView::FULL, dstType)) ; 
    37       CGridLocalConnector localToDst(elementsConnector) ; 
    38       CArray<bool,1> maskIn(localToDst.getSrcSize()) ; 
    39       CArray<bool,1> maskOut1(localToDst.getDstSize()) ; 
    40       CArray<bool,1> maskOut2(localToDst.getDstSize()) ; 
     37      auto localToDst=make_shared<CGridLocalConnector>(elementsConnector) ; 
     38      CArray<bool,1> maskIn(localToDst->getSrcSize()) ; 
     39      CArray<bool,1> maskOut1(localToDst->getDstSize()) ; 
     40      CArray<bool,1> maskOut2(localToDst->getDstSize()) ; 
    4141      maskIn=true ; 
    42       localToDst.transfer(maskIn,maskOut1,false) ; 
     42      localToDst->transfer(maskIn,maskOut1,false) ; 
    4343      auto& localMask = parent->getLocalMask() ; 
    4444      for(int i=0 ; i < maskIn.numElements() ; i++) maskIn(i)=localMask[i] ; 
    45       localToDst.transfer(maskIn,maskOut2,false) ; 
     45      localToDst->transfer(maskIn,maskOut2,false) ; 
    4646      mask_.assign(dstSize_,true) ; 
    4747      for(int i=0;i<dstSize_;i++) if (maskOut1(i)==true && maskOut2(i)==false) mask_[i]=false ; 
Note: See TracChangeset for help on using the changeset viewer.