diff --git a/src/USER-DRUDE/fix_drude_transform.cpp b/src/USER-DRUDE/fix_drude_transform.cpp
index 29c1ff88211085fb9769e3d292b6bc3352d9d02d..bdb5d95acc06f6480287e1988ad4651478481ce4 100644
--- a/src/USER-DRUDE/fix_drude_transform.cpp
+++ b/src/USER-DRUDE/fix_drude_transform.cpp
@@ -75,7 +75,7 @@ void FixDrudeTransform<inverse>::setup(int) {
 
   if (!rmass) {
     if (!mcoeff) mcoeff = new double[ntypes+1];
-    double mcoeff_loc[ntypes+1];
+    double *mcoeff_loc = new double[ntypes+1];
     for (int itype=0; itype<=ntypes; itype++) mcoeff_loc[itype] = 2.; // an impossible value: mcoeff is at most 1.
     for (int i=0; i<nlocal; i++) {
       if (drudetype[type[i]] == DRUDE_TYPE) {
@@ -95,6 +95,7 @@ void FixDrudeTransform<inverse>::setup(int) {
     // mcoeff is 2 for non polarizable
     // 0 < mcoeff < 1 for drude
     // mcoeff < 0 for core
+    delete[] mcoeff_loc;
   }
 }