diff --git a/include/memory-faucet.h b/include/memory-faucet.h
index a5f1bf7075a8f7fc0642d51e01bf4d6a4292eef9..d41232f83c427fadff9747cfa9cc44f6d2e0349d 100644
--- a/include/memory-faucet.h
+++ b/include/memory-faucet.h
@@ -39,6 +39,7 @@ public:
     memBuf();
     ~memBuf();
     void* ptr();
+    void** ptr();
     const void* ptr() const;
     void free_memory();
     int get_size() const;
diff --git a/src/memory-faucet.cpp b/src/memory-faucet.cpp
index ef50c5f3246cbd32f840c8d1fa58d70f2d504949..ed3343a73fa3556df567971c9adfd01221d2f202 100644
--- a/src/memory-faucet.cpp
+++ b/src/memory-faucet.cpp
@@ -91,6 +91,12 @@ void* memBuf<mem, choose_type>::ptr()
     return buf;
 }
 
+template< MemType mem, buf_choose_policy choose_type >
+void** memBuf<mem, choose_type>::ptr()
+{
+    return &buf;
+}
+
 template< MemType mem, buf_choose_policy choose_type >
 const void* memBuf<mem, choose_type>::ptr() const
 {