From 4a065a934f1f6620385edfa717d93b90a8cedf02 Mon Sep 17 00:00:00 2001 From: Pietro Incardona <i-bird@localhost.localdomain> Date: Tue, 22 Mar 2016 18:22:07 +0100 Subject: [PATCH] Fixing destroy --- src/Makefile.am | 2 +- src/memory/BHeapMemory.hpp | 4 ++-- src/memory/HeapMemory.cpp | 18 +++++++++++------- src/memory/HeapMemory.hpp | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 7a117da..70ae67d 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -22,7 +22,7 @@ libofpmmemory_se2_a_SOURCES = memory/HeapMemory.cpp $(CUDA_SOURCES) memory/PtrMe libofpmmemory_se2_a_CXXFLAGS = $(INCLUDES_PATH) $(BOOST_CPPFLAGS) -I/usr/local/include -DSE_CLASS2 libofpmmemory_se2_a_CFLAGS = -nobase_include_HEADERS = memory/ExtPreAlloc.hpp memory/HeapMemory.hpp memory/memory.hpp memory/PreAllocHeapMemory.hpp memory/PtrMemory.hpp \ +nobase_include_HEADERS = memory/ExtPreAlloc.hpp memory/BHeapMemory.hpp memory/HeapMemory.hpp memory/memory.hpp memory/PreAllocHeapMemory.hpp memory/PtrMemory.hpp \ Memleak_check.hpp ptr_info.hpp \ util/se_util.hpp diff --git a/src/memory/BHeapMemory.hpp b/src/memory/BHeapMemory.hpp index 71a54c6..ec087d8 100644 --- a/src/memory/BHeapMemory.hpp +++ b/src/memory/BHeapMemory.hpp @@ -64,7 +64,7 @@ public: //! Constructor, we choose a default alignment of 32 for avx BHeapMemory() - :HeapMemory() + :HeapMemory(),buf_sz(0) {}; virtual ~BHeapMemory() @@ -118,7 +118,7 @@ public: * \return true if the resize operation complete correctly * */ - virtual size_t size() + virtual size_t size() const { return buf_sz; } diff --git a/src/memory/HeapMemory.cpp b/src/memory/HeapMemory.cpp index 1901fa7..348656a 100644 --- a/src/memory/HeapMemory.cpp +++ b/src/memory/HeapMemory.cpp @@ -67,6 +67,10 @@ void HeapMemory::destroy() if (dmOrig != NULL) delete [] dmOrig; + + sz = 0; + dm = NULL; + dmOrig = NULL; } @@ -166,13 +170,13 @@ size_t HeapMemory::size() const bool HeapMemory::resize(size_t sz) { // if the allocated memory is enough, do not resize - if (sz <= size()) + if (sz <= HeapMemory::size()) return true; //! Allocate the device memory if not done yet - if (size() == 0) - return allocate(sz); + if (HeapMemory::size() == 0) + return HeapMemory::allocate(sz); //! Create a new buffer if sz is bigger than the actual size byte * tdm; @@ -192,16 +196,16 @@ bool HeapMemory::resize(size_t sz) //! copy from the old buffer to the new one #ifdef SE_CLASS2 - check_valid(tdm,size()); - check_valid(dm,size()); + check_valid(tdm,HeapMemory::size()); + check_valid(dm,HeapMemory::size()); #endif - memcpy(tdm,dm,size()); + memcpy(tdm,dm,HeapMemory::size()); this->sz = sz; //! free the old buffer - destroy(); + HeapMemory::destroy(); //! change to the new buffer diff --git a/src/memory/HeapMemory.hpp b/src/memory/HeapMemory.hpp index 82fba22..01ce5f6 100644 --- a/src/memory/HeapMemory.hpp +++ b/src/memory/HeapMemory.hpp @@ -140,7 +140,7 @@ public: virtual ~HeapMemory() { if(ref_cnt == 0) - destroy(); + HeapMemory::destroy(); else std::cerr << "Error: " << __FILE__ << " " << __LINE__ << " destroying a live object" << "\n"; }; -- GitLab