[Lemon-commits] Balazs Dezso: Automatic GLPK env deallocation (#...

Lemon HG hg at lemon.cs.elte.hu
Wed Mar 4 14:54:46 CET 2009


details:   http://lemon.cs.elte.hu/hg/lemon/rev/ba124394367a
changeset: 560:ba124394367a
user:      Balazs Dezso <deba [at] inf.elte.hu>
date:      Mon Feb 23 23:44:29 2009 +0100
description:
	Automatic GLPK env deallocation (#213)

diffstat:

4 files changed, 14 insertions(+), 10 deletions(-)
lemon/glpk.cc    |    2 ++
lemon/glpk.h     |   20 ++++++++++++--------
test/lp_test.cc  |    1 -
test/mip_test.cc |    1 -

diffs (66 lines):

diff --git a/lemon/glpk.cc b/lemon/glpk.cc
--- a/lemon/glpk.cc
+++ b/lemon/glpk.cc
@@ -526,6 +526,8 @@
     glp_free_env();
   }
 
+  GlpkBase::FreeEnvHelper GlpkBase::freeEnvHelper;
+
   // GlpkLp members
 
   GlpkLp::GlpkLp()
diff --git a/lemon/glpk.h b/lemon/glpk.h
--- a/lemon/glpk.h
+++ b/lemon/glpk.h
@@ -100,16 +100,20 @@
 
     virtual void _clear();
 
+  private:
+
+    static void freeEnv();
+
+    struct FreeEnvHelper {
+      ~FreeEnvHelper() {
+        freeEnv();
+      }
+    };
+    
+    static FreeEnvHelper freeEnvHelper;
+    
   public:
 
-    /// \brief Deallocates the globally allocated memory of GLPK.
-
-    /// Deallocates the globally allocated memory of GLPK.  \note
-    /// Usually, it do not have to be called, because the GLPK use
-    /// only a small amount of global memory, and it is deallocated
-    /// automatically at the end of program.
-    static void freeEnv();
-
     ///Pointer to the underlying GLPK data structure.
     LPX *lpx() {return lp;}
     ///Const pointer to the underlying GLPK data structure.
diff --git a/test/lp_test.cc b/test/lp_test.cc
--- a/test/lp_test.cc
+++ b/test/lp_test.cc
@@ -366,7 +366,6 @@
     lpTest(lp_glpk1);
     aTest(lp_glpk2);
   }
-  GlpkLp::freeEnv();
 #endif
 
 #ifdef HAVE_CPLEX
diff --git a/test/mip_test.cc b/test/mip_test.cc
--- a/test/mip_test.cc
+++ b/test/mip_test.cc
@@ -115,7 +115,6 @@
     GlpkMip mip1;
     aTest(mip1);
   }
-  GlpkLp::freeEnv();
 #endif
 
 #ifdef HAVE_CPLEX



More information about the Lemon-commits mailing list