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_client_server_remote_connector.cpp

    r2236 r2267  
    1010   * \param remoteSize Size of the remote communicator 
    1111   */  
    12   CGridClientServerRemoteConnector::CGridClientServerRemoteConnector(vector<CLocalView*>& srcFullView, vector<CLocalView*>& srcWorkflowView, vector<CDistributedView*>& dstView, MPI_Comm localComm, int remoteSize)  
     12  CGridClientServerRemoteConnector::CGridClientServerRemoteConnector( vector<shared_ptr<CLocalView> >& srcFullView, vector<shared_ptr<CLocalView>>& srcWorkflowView,  
     13                                                                      vector<shared_ptr<CDistributedView>>& dstView, MPI_Comm localComm, int remoteSize)  
    1314                       : CGridRemoteConnector(srcFullView, dstView, localComm, remoteSize) , srcWorkflowView_(srcWorkflowView) 
    1415  {} 
     
    1718  void CGridClientServerRemoteConnector::computeConnector(void) 
    1819  { 
    19     CGridRemoteConnector workflowRemoteConnector(srcWorkflowView_,dstView_,localComm_,remoteSize_) ; 
    20     workflowRemoteConnector.computeConnector() ; 
     20    auto workflowRemoteConnector=make_shared<CGridRemoteConnector>(srcWorkflowView_,dstView_,localComm_,remoteSize_) ; 
     21    workflowRemoteConnector->computeConnector() ; 
    2122    computeViewDistribution() ; 
    2223     
    23     for(int i=0;i<srcView_.size();i++) isSrcViewDistributed_[i] =  isSrcViewDistributed_[i] || workflowRemoteConnector.getIsSrcViewDistributed()[i]  ; 
     24    for(int i=0;i<srcView_.size();i++) isSrcViewDistributed_[i] =  isSrcViewDistributed_[i] || workflowRemoteConnector->getIsSrcViewDistributed()[i]  ; 
    2425    computeConnectorMethods() ; 
    2526    computeRedondantRanks() ; 
    2627 
    2728    for(auto& rank : rankToRemove_) 
    28       if (workflowRemoteConnector.getRankToRemove().count(rank)!=0) 
     29      if (workflowRemoteConnector->getRankToRemove().count(rank)!=0) 
    2930        for(auto& element : elements_) element.erase(rank) ; 
    3031  } 
Note: See TracChangeset for help on using the changeset viewer.