Skip to content

Commit 99720fe

Browse files
authored
fix memory leak (#6515)
1 parent 305b7d6 commit 99720fe

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

source/source_lcao/module_gint/gint_old.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,11 @@ void Gint::transfer_DM2DtoGrid(std::vector<hamilt::HContainer<double>*> DM2D) {
264264
for (int iat = 0; iat < ucell->nat; iat++) {
265265
iat2iwt[iat] = ucell->get_iat2iwt()[iat]/2;
266266
}
267-
Parallel_Orbitals *pv = new Parallel_Orbitals();
268-
pv->set(mg, ng, nb, blacs_ctxt);
269-
pv->set_atomic_trace(iat2iwt.data(), ucell->nat, mg);
267+
Parallel_Orbitals pv{};
268+
pv.set(mg, ng, nb, blacs_ctxt);
269+
pv.set_atomic_trace(iat2iwt.data(), ucell->nat, mg);
270270
auto ijr_info = DM2D[0]->get_ijr_info();
271-
this-> dm2d_tmp = new hamilt::HContainer<double>(pv, nullptr, &ijr_info);
271+
this-> dm2d_tmp = new hamilt::HContainer<double>(&pv, nullptr, &ijr_info);
272272
ModuleBase::Memory::record("Gint::dm2d_tmp", this->dm2d_tmp->get_memory_size());
273273
for (int is = 0; is < 4; is++){
274274
for (int iap = 0; iap < DM2D[0]->size_atom_pairs(); ++iap) {
@@ -290,6 +290,8 @@ void Gint::transfer_DM2DtoGrid(std::vector<hamilt::HContainer<double>*> DM2D) {
290290
}
291291
hamilt::transferParallels2Serials( *(this->dm2d_tmp), this->DMRGint[is]);
292292
}
293+
delete this->dm2d_tmp;
294+
this->dm2d_tmp = nullptr;
293295
#else
294296
//this->DMRGint_full = DM2D[0];
295297
#endif

source/source_lcao/module_gint/temp_gint/gint_common.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,19 +175,19 @@ void transfer_dm_2d_to_gint(
175175
for (int iat = 0; iat < ucell->nat; iat++) {
176176
iat2iwt[iat] = ucell->get_iat2iwt()[iat]/2;
177177
}
178-
Parallel_Orbitals *pv = new Parallel_Orbitals();
179-
pv->set(mg, ng, nb, blacs_ctxt);
180-
pv->set_atomic_trace(iat2iwt.data(), ucell->nat, mg);
178+
Parallel_Orbitals pv{};
179+
pv.set(mg, ng, nb, blacs_ctxt);
180+
pv.set_atomic_trace(iat2iwt.data(), ucell->nat, mg);
181181
auto ijr_info = dm[0]->get_ijr_info();
182-
HContainer<T>* dm2d_tmp = new hamilt::HContainer<T>(pv, nullptr, &ijr_info);
182+
HContainer<T> dm2d_tmp(&pv, nullptr, &ijr_info);
183183
for (int is = 0; is < 4; is++){
184184
for (int iap = 0; iap < dm[0]->size_atom_pairs(); ++iap) {
185185
auto& ap = dm[0]->get_atom_pair(iap);
186186
int iat1 = ap.get_atom_i();
187187
int iat2 = ap.get_atom_j();
188188
for (int ir = 0; ir < ap.get_R_size(); ++ir) {
189189
const ModuleBase::Vector3<int> r_index = ap.get_R_index(ir);
190-
T* matrix_out = dm2d_tmp -> find_matrix(iat1, iat2, r_index)->get_pointer();
190+
T* matrix_out = dm2d_tmp.find_matrix(iat1, iat2, r_index)->get_pointer();
191191
T* matrix_in = ap.get_pointer(ir);
192192
for (int irow = 0; irow < ap.get_row_size()/2; irow ++) {
193193
for (int icol = 0; icol < ap.get_col_size()/2; icol ++) {
@@ -198,7 +198,7 @@ void transfer_dm_2d_to_gint(
198198
}
199199
}
200200
}
201-
hamilt::transferParallels2Serials( *dm2d_tmp, &dm_gint[is]);
201+
hamilt::transferParallels2Serials(dm2d_tmp, &dm_gint[is]);
202202
}
203203
#else
204204
//HContainer<T>& dm_full = *(dm[0]);

0 commit comments

Comments
 (0)