diff --git a/src/wrap_cl.hpp b/src/wrap_cl.hpp
index 47f392db6f3142b64d07fc5542bef9b449d3123e..d013519d1a2b829eb1ffd3131ad8057cf4cffcfc 100644
--- a/src/wrap_cl.hpp
+++ b/src/wrap_cl.hpp
@@ -2166,6 +2166,9 @@ namespace pyopencl
       }
 
       py::object get_info(cl_mem_info param_name) const;
+
+      virtual ~memory_object_holder()
+      { }
   };
 
 
@@ -2213,7 +2216,7 @@ namespace pyopencl
         m_valid = false;
       }
 
-      virtual ~memory_object()
+      ~memory_object()
       {
         if (m_valid)
           release();
@@ -3573,6 +3576,8 @@ namespace pyopencl
       virtual void *svm_ptr() const = 0;
       // may throw size_not_available
       virtual size_t size() const = 0;
+      virtual ~svm_pointer()
+      { }
   };
 
   // }}}
diff --git a/src/wrap_mempool.cpp b/src/wrap_mempool.cpp
index 3ba6fb607ce1d4e0a603ee08e25831f419484f53..cb711b1b27ea11645361665aa60ade6a9c687b20 100644
--- a/src/wrap_mempool.cpp
+++ b/src/wrap_mempool.cpp
@@ -148,7 +148,6 @@ namespace pyopencl {
       }
   };
 
-  const unsigned zero = 0;
 
   class immediate_buffer_allocator : public buffer_allocator_base
   {
@@ -451,6 +450,9 @@ namespace pyopencl {
         : super(p, s)
       { }
 
+      virtual ~pooled_svm()
+      { }
+
       void *svm_ptr() const
       { return m_ptr.ptr; }