diff --git a/include/memory-faucet.h b/include/memory-faucet.h
index 97d806f8e87d7bf3c992b1064c1ef59bf09d95d6..36158f1bb394072879afd34de7513c4b06649a5f 100644
--- a/include/memory-faucet.h
+++ b/include/memory-faucet.h
@@ -38,7 +38,7 @@ public:
     memBuf(const size_t required_size);
     memBuf();
     ~memBuf();
-    void* ptr();
+    void*& ptr();
     void free_memory();
     int get_size() const;
     void get_memory(const size_t required_size);
diff --git a/src/memory-faucet.cpp b/src/memory-faucet.cpp
index 32fc36788652826792bdb75796b2856e3118fae9..000562899d46ee71e6cd7f3cd692e11bb46f6dff 100644
--- a/src/memory-faucet.cpp
+++ b/src/memory-faucet.cpp
@@ -86,7 +86,7 @@ memBuf<mem, choose_type>::~memBuf()
 }
 
 template< MemType mem, buf_choose_policy choose_type >
-void* memBuf<mem, choose_type>::ptr()
+void*& memBuf<mem, choose_type>::ptr()
 {
     return buf;
 }