From 7a36174789b750a4b9141aff69d98c927d30726f Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Tue, 28 Jul 2020 20:58:39 -0700 Subject: [PATCH] update --- version3.0/nasal_gc.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/version3.0/nasal_gc.h b/version3.0/nasal_gc.h index 0ee560f..d7b78c9 100644 --- a/version3.0/nasal_gc.h +++ b/version3.0/nasal_gc.h @@ -11,6 +11,7 @@ private: std::vector elems; public: nasal_vector(); + ~nasal_vector(); void add_elem(int); int del_elem(int); }; @@ -21,6 +22,7 @@ private: std::map elems; public: nasal_hash(); + ~nasal_hash(); void add_elem(std::string,int); void del_elem(std::string); }; @@ -32,6 +34,7 @@ private: nasal_ast function_tree; public: nasal_function(); + ~nasal_function(); }; class nasal_closure { @@ -40,6 +43,7 @@ private: std::map elems; public: nasal_closure(); + ~nasal_closure(); }; class nasal_scalar @@ -97,6 +101,14 @@ nasal_vector::nasal_vector() elems.clear(); return; } +nasal_vector::~nasal_vector() +{ + int size=elems.size(); + for(int i=0;i::iterator iter=elems.begin();iter!=elems.end();++iter) + nasal_vm.mem_free(iter->second); + elems.clear(); + return; +} void nasal_hash::add_elem(std::string key,int memory_address) { elems[key]=memory_address; @@ -137,6 +156,14 @@ nasal_function::nasal_function() function_tree.clear(); return; } +nasal_function::~nasal_function() +{ + for(std::list::iterator iter=closures.begin();iter!=closures.end();++iter) + nasal_vm.mem_free(*iter); + closures.clear(); + function_tree.clear(); + return; +} /*functions of nasal_closure*/ nasal_closure::nasal_closure() @@ -144,6 +171,13 @@ nasal_closure::nasal_closure() elems.clear(); return; } +nasal_closure::~nasal_closure() +{ + for(std::map::iterator iter=elems.begin();iter!=elems.end();++iter) + nasal_vm.mem_free(iter->second); + elems.clear(); + return; +} /*functions of nasal_scalar*/ nasal_scalar::nasal_scalar()