diff --git a/source/source_lcao/module_gint/gint_old.cpp b/source/source_lcao/module_gint/gint_old.cpp index 4c0f11c12a3..da19046563c 100644 --- a/source/source_lcao/module_gint/gint_old.cpp +++ b/source/source_lcao/module_gint/gint_old.cpp @@ -264,11 +264,11 @@ void Gint::transfer_DM2DtoGrid(std::vector*> DM2D) { for (int iat = 0; iat < ucell->nat; iat++) { iat2iwt[iat] = ucell->get_iat2iwt()[iat]/2; } - Parallel_Orbitals *pv = new Parallel_Orbitals(); - pv->set(mg, ng, nb, blacs_ctxt); - pv->set_atomic_trace(iat2iwt.data(), ucell->nat, mg); + Parallel_Orbitals pv{}; + pv.set(mg, ng, nb, blacs_ctxt); + pv.set_atomic_trace(iat2iwt.data(), ucell->nat, mg); auto ijr_info = DM2D[0]->get_ijr_info(); - this-> dm2d_tmp = new hamilt::HContainer(pv, nullptr, &ijr_info); + this-> dm2d_tmp = new hamilt::HContainer(&pv, nullptr, &ijr_info); ModuleBase::Memory::record("Gint::dm2d_tmp", this->dm2d_tmp->get_memory_size()); for (int is = 0; is < 4; is++){ for (int iap = 0; iap < DM2D[0]->size_atom_pairs(); ++iap) { @@ -290,6 +290,8 @@ void Gint::transfer_DM2DtoGrid(std::vector*> DM2D) { } hamilt::transferParallels2Serials( *(this->dm2d_tmp), this->DMRGint[is]); } + delete this->dm2d_tmp; + this->dm2d_tmp = nullptr; #else //this->DMRGint_full = DM2D[0]; #endif diff --git a/source/source_lcao/module_gint/temp_gint/gint_common.cpp b/source/source_lcao/module_gint/temp_gint/gint_common.cpp index 7c3649641de..675b50c7cdd 100644 --- a/source/source_lcao/module_gint/temp_gint/gint_common.cpp +++ b/source/source_lcao/module_gint/temp_gint/gint_common.cpp @@ -175,11 +175,11 @@ void transfer_dm_2d_to_gint( for (int iat = 0; iat < ucell->nat; iat++) { iat2iwt[iat] = ucell->get_iat2iwt()[iat]/2; } - Parallel_Orbitals *pv = new Parallel_Orbitals(); - pv->set(mg, ng, nb, blacs_ctxt); - pv->set_atomic_trace(iat2iwt.data(), ucell->nat, mg); + Parallel_Orbitals pv{}; + pv.set(mg, ng, nb, blacs_ctxt); + pv.set_atomic_trace(iat2iwt.data(), ucell->nat, mg); auto ijr_info = dm[0]->get_ijr_info(); - HContainer* dm2d_tmp = new hamilt::HContainer(pv, nullptr, &ijr_info); + HContainer dm2d_tmp(&pv, nullptr, &ijr_info); for (int is = 0; is < 4; is++){ for (int iap = 0; iap < dm[0]->size_atom_pairs(); ++iap) { auto& ap = dm[0]->get_atom_pair(iap); @@ -187,7 +187,7 @@ void transfer_dm_2d_to_gint( int iat2 = ap.get_atom_j(); for (int ir = 0; ir < ap.get_R_size(); ++ir) { const ModuleBase::Vector3 r_index = ap.get_R_index(ir); - T* matrix_out = dm2d_tmp -> find_matrix(iat1, iat2, r_index)->get_pointer(); + T* matrix_out = dm2d_tmp.find_matrix(iat1, iat2, r_index)->get_pointer(); T* matrix_in = ap.get_pointer(ir); for (int irow = 0; irow < ap.get_row_size()/2; irow ++) { for (int icol = 0; icol < ap.get_col_size()/2; icol ++) { @@ -198,7 +198,7 @@ void transfer_dm_2d_to_gint( } } } - hamilt::transferParallels2Serials( *dm2d_tmp, &dm_gint[is]); + hamilt::transferParallels2Serials(dm2d_tmp, &dm_gint[is]); } #else //HContainer& dm_full = *(dm[0]);