diff --git a/src/SNAP/compute_sna_atom.cpp b/src/SNAP/compute_sna_atom.cpp
index a2c1f55788e64b57e14b671cbf7e88767af47a57..5ca63a7e850b27ed9420ee86985273475638d54e 100644
--- a/src/SNAP/compute_sna_atom.cpp
+++ b/src/SNAP/compute_sna_atom.cpp
@@ -115,7 +115,8 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) :
     } else error->all(FLERR,"Illegal compute sna/atom command");
   }
 
-  snaptr = new SNA*[comm->nthreads];
+  nthreads = comm->nthreads;
+  snaptr = new SNA*[nthreads];
 #if defined(_OPENMP)
 #pragma omp parallel default(none) shared(lmp,rfac0,twojmax,rmin0,switchflag,bzeroflag)
 #endif
@@ -146,6 +147,8 @@ ComputeSNAAtom::~ComputeSNAAtom()
   memory->destroy(radelem);
   memory->destroy(wjelem);
   memory->destroy(cutsq);
+  for (int tid = 0; tid<nthreads; tid++)
+    delete snaptr[tid];
   delete [] snaptr;
 }
 
diff --git a/src/SNAP/compute_sna_atom.h b/src/SNAP/compute_sna_atom.h
index b22eea71b5ae2b103a0fcaee2dadf1b1a1d835bb..2f6fb189963f99c823bb2397f6cbc651e50d318f 100644
--- a/src/SNAP/compute_sna_atom.h
+++ b/src/SNAP/compute_sna_atom.h
@@ -45,6 +45,7 @@ class ComputeSNAAtom : public Compute {
   class SNA** snaptr;
   double cutmax;
   int quadraticflag;
+  int nthreads;
 };
 
 }
diff --git a/src/SNAP/compute_snad_atom.cpp b/src/SNAP/compute_snad_atom.cpp
index 800d1942e3f9da7a18f30d0c3e9b4241b39e3534..da56555055285899456c4a4aefa1c11711aa107e 100644
--- a/src/SNAP/compute_snad_atom.cpp
+++ b/src/SNAP/compute_snad_atom.cpp
@@ -148,6 +148,8 @@ ComputeSNADAtom::~ComputeSNADAtom()
   memory->destroy(radelem);
   memory->destroy(wjelem);
   memory->destroy(cutsq);
+  for (int tid = 0; tid<nthreads; tid++)
+    delete snaptr[tid];
   delete [] snaptr;
 }
 
diff --git a/src/SNAP/compute_snad_atom.h b/src/SNAP/compute_snad_atom.h
index a33e6047c2c2bd0fca6d25d8a2b948fef9f7d4f9..92003a9bc572ba57e0a7a79294b3190ccea433e1 100644
--- a/src/SNAP/compute_snad_atom.h
+++ b/src/SNAP/compute_snad_atom.h
@@ -47,6 +47,7 @@ class ComputeSNADAtom : public Compute {
   class SNA** snaptr;
   double cutmax;
   int quadraticflag;
+  int nthreads;
 };
 
 }
diff --git a/src/SNAP/compute_snav_atom.cpp b/src/SNAP/compute_snav_atom.cpp
index 2b823f7b8b5804071a50723d2296d2e15c7d55b0..27bfc1bef0b972d6507173f3fe1523a7d21783e9 100644
--- a/src/SNAP/compute_snav_atom.cpp
+++ b/src/SNAP/compute_snav_atom.cpp
@@ -142,6 +142,9 @@ ComputeSNAVAtom::~ComputeSNAVAtom()
   memory->destroy(radelem);
   memory->destroy(wjelem);
   memory->destroy(cutsq);
+
+  for (int tid = 0; tid<nthreads; tid++)
+    delete snaptr[tid];
   delete [] snaptr;
 }
 
diff --git a/src/SNAP/compute_snav_atom.h b/src/SNAP/compute_snav_atom.h
index 7d39786ef98723991b5e35a28c3e219daeb2d8db..9be5e1d3896aed6a881e444c3d71b2574aac4e58 100644
--- a/src/SNAP/compute_snav_atom.h
+++ b/src/SNAP/compute_snav_atom.h
@@ -46,6 +46,7 @@ class ComputeSNAVAtom : public Compute {
   double *wjelem;
   class SNA** snaptr;
   int quadraticflag;
+  int nthreads;
 };
 
 }