diff --git a/src/Makefile.am b/src/Makefile.am index 7a117da2852dcb7c9151defafb589b10314a81e6..70ae67deb7e389b7b7a3fd0e6bb1ec71ada2d9f4 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 71a54c628afce79dd84e7f65d1d1bc2ca69c04b0..ec087d8bc74c2cfeef4eb8f87f952ce7e3f8af31 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 1901fa70c342d120ce424abde9dba686d7553a98..348656a11ebaeac85fe730a33d71f531fb278af4 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 82fba22856c7d22c4e6804f3a03be512af55d4c4..01ce5f68dfcb78550b8b1da37926ecd9e7a9c0d8 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"; };