# HG changeset patch
# User Balazs Dezso <deba@inf.elte.hu>
# Date 1235429069 -3600
# Node ID ba124394367a55cc36b851a808f3f3218abf8367
# Parent 0fec6a017eaddac797518d40c102144176c47fad
Automatic GLPK env deallocation (#213)
diff -r 0fec6a017ead -r ba124394367a lemon/glpk.cc
a
|
b
|
|
526 | 526 | glp_free_env(); |
527 | 527 | } |
528 | 528 | |
| 529 | GlpkBase::FreeEnvHelper GlpkBase::freeEnvHelper; |
| 530 | |
529 | 531 | // GlpkLp members |
530 | 532 | |
531 | 533 | GlpkLp::GlpkLp() |
diff -r 0fec6a017ead -r ba124394367a lemon/glpk.h
a
|
b
|
|
100 | 100 | |
101 | 101 | virtual void _clear(); |
102 | 102 | |
| 103 | private: |
| 104 | |
| 105 | static void freeEnv(); |
| 106 | |
| 107 | struct FreeEnvHelper { |
| 108 | ~FreeEnvHelper() { |
| 109 | freeEnv(); |
| 110 | } |
| 111 | }; |
| 112 | |
| 113 | static FreeEnvHelper freeEnvHelper; |
| 114 | |
103 | 115 | public: |
104 | 116 | |
105 | | /// \brief Deallocates the globally allocated memory of GLPK. |
106 | | |
107 | | /// Deallocates the globally allocated memory of GLPK. \note |
108 | | /// Usually, it do not have to be called, because the GLPK use |
109 | | /// only a small amount of global memory, and it is deallocated |
110 | | /// automatically at the end of program. |
111 | | static void freeEnv(); |
112 | | |
113 | 117 | ///Pointer to the underlying GLPK data structure. |
114 | 118 | LPX *lpx() {return lp;} |
115 | 119 | ///Const pointer to the underlying GLPK data structure. |
diff -r 0fec6a017ead -r ba124394367a test/lp_test.cc
a
|
b
|
|
366 | 366 | lpTest(lp_glpk1); |
367 | 367 | aTest(lp_glpk2); |
368 | 368 | } |
369 | | GlpkLp::freeEnv(); |
370 | 369 | #endif |
371 | 370 | |
372 | 371 | #ifdef HAVE_CPLEX |
diff -r 0fec6a017ead -r ba124394367a test/mip_test.cc
a
|
b
|
|
115 | 115 | GlpkMip mip1; |
116 | 116 | aTest(mip1); |
117 | 117 | } |
118 | | GlpkLp::freeEnv(); |
119 | 118 | #endif |
120 | 119 | |
121 | 120 | #ifdef HAVE_CPLEX |