avoid memory leak for element names

This commit is contained in:
Axel Kohlmeyer
2025-04-07 18:05:35 -04:00
parent 6c337ba655
commit 8ea6c5c395
3 changed files with 5 additions and 3 deletions

View File

@ -35,6 +35,7 @@ MLIAPDescriptor::MLIAPDescriptor(LAMMPS *lmp) :
MLIAPDescriptor::~MLIAPDescriptor() MLIAPDescriptor::~MLIAPDescriptor()
{ {
if (allocated_elements)
for (int i = 0; i < nelements; i++) delete[] elements[i]; for (int i = 0; i < nelements; i++) delete[] elements[i];
delete[] elements; delete[] elements;
memory->destroy(cutsq); memory->destroy(cutsq);

View File

@ -82,7 +82,7 @@ MLIAPDescriptorACE::MLIAPDescriptorACE(LAMMPS *_lmp, char *yacefilename) :
for (int iielem = 0; iielem < nelements; iielem++) delete[] elements[iielem]; for (int iielem = 0; iielem < nelements; iielem++) delete[] elements[iielem];
delete[] elements; delete[] elements;
allocated_elements = 0; allocated_elements = 0;
} else if (not allocated_elements) { } else if (!allocated_elements) {
elements = new char *[nelements]; elements = new char *[nelements];
for (int iielem = 0; iielem < nelements; iielem++) { for (int iielem = 0; iielem < nelements; iielem++) {
elements[iielem] = utils::strdup(acemlimpl->basis_set->elements_name[iielem]); elements[iielem] = utils::strdup(acemlimpl->basis_set->elements_name[iielem]);

View File

@ -111,7 +111,8 @@ void MLIAPDummyDescriptor::set_elements(char **elems, int nelems)
{ {
nelements = nelems; nelements = nelems;
elements = new char *[nelems]; elements = new char *[nelems];
for (int i = 0; i < nelems; i++) { elements[i] = utils::strdup(elems[i]); } for (int i = 0; i < nelems; i++) elements[i] = utils::strdup(elems[i]);
allocated_elements = 1;
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */