diff --git a/include/memory-faucet.h b/include/memory-faucet.h
index 36158f1bb394072879afd34de7513c4b06649a5f..ed986b4a06f7cd09079e4df05a9b0df95fac8f87 100644
--- a/include/memory-faucet.h
+++ b/include/memory-faucet.h
@@ -38,7 +38,8 @@ public:
     memBuf(const size_t required_size);
     memBuf();
     ~memBuf();
-    void*& ptr();
+    void* ptr();
+    const void* ptr() const;
     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 000562899d46ee71e6cd7f3cd692e11bb46f6dff..d12847666da75d8160250e517d21f53b2e808727 100644
--- a/src/memory-faucet.cpp
+++ b/src/memory-faucet.cpp
@@ -86,7 +86,13 @@ 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;
+}
+
+template< MemType mem, buf_choose_policy choose_type >
+const void* memBuf<mem, choose_type>::ptr() const
 {
     return buf;
 }