diff --git a/driver/rsdCore.cpp b/driver/rsdCore.cpp
index 0f637b6..7b41a47 100644
--- a/driver/rsdCore.cpp
+++ b/driver/rsdCore.cpp
@@ -55,6 +55,8 @@
     Shutdown,
     NULL,
     SetPriority,
+    rsdAllocRuntimeMem,
+    rsdFreeRuntimeMem,
     {
         rsdScriptInit,
         rsdInitIntrinsic,
@@ -202,3 +204,11 @@
     rsc->mHal.drv = NULL;
 }
 
+void* rsdAllocRuntimeMem(size_t size, uint32_t flags) {
+    void* buffer = calloc(size, sizeof(char));
+    return buffer;
+}
+
+void rsdFreeRuntimeMem(void* ptr) {
+    free(ptr);
+}
diff --git a/driver/rsdCore.h b/driver/rsdCore.h
index 8b6ebf7..d873e3e 100644
--- a/driver/rsdCore.h
+++ b/driver/rsdCore.h
@@ -52,6 +52,8 @@
 } RsdHal;
 
 void rsdLaunchThreads(android::renderscript::Context *rsc, WorkerCallback_t cbk, void *data);
+void* rsdAllocRuntimeMem(size_t size, uint32_t flags);
+void rsdFreeRuntimeMem(void* ptr);
 
 #endif
 
diff --git a/rsAllocation.cpp b/rsAllocation.cpp
index 9833ab3..7c7bc40 100644
--- a/rsAllocation.cpp
+++ b/rsAllocation.cpp
@@ -39,9 +39,24 @@
     updateCache();
 }
 
+void Allocation::operator delete(void* ptr) {
+    if (ptr) {
+        Allocation *a = (Allocation*) ptr;
+        a->getContext()->mHal.funcs.freeRuntimeMem(ptr);
+    }
+}
+
 Allocation * Allocation::createAllocation(Context *rsc, const Type *type, uint32_t usages,
                               RsAllocationMipmapControl mc, void * ptr) {
-    Allocation *a = new Allocation(rsc, type, usages, mc, ptr);
+    // Allocation objects must use allocator specified by the driver
+    void* allocMem = rsc->mHal.funcs.allocRuntimeMem(sizeof(Allocation), 0);
+
+    if (!allocMem) {
+        rsc->setError(RS_ERROR_FATAL_DRIVER, "Couldn't allocate memory for Allocation");
+        return NULL;
+    }
+
+    Allocation *a = new (allocMem) Allocation(rsc, type, usages, mc, ptr);
 
     if (!rsc->mHal.funcs.allocation.init(rsc, a, type->getElement()->getHasReferences())) {
         rsc->setError(RS_ERROR_FATAL_DRIVER, "Allocation::Allocation, alloc failure");
diff --git a/rsAllocation.h b/rsAllocation.h
index 2938f65..087d1cd 100644
--- a/rsAllocation.h
+++ b/rsAllocation.h
@@ -80,6 +80,8 @@
     };
     Hal mHal;
 
+    void operator delete(void* ptr);
+
     static Allocation * createAllocation(Context *rsc, const Type *, uint32_t usages,
                                          RsAllocationMipmapControl mc = RS_ALLOCATION_MIPMAP_NONE,
                                          void *ptr = 0);
diff --git a/rs_hal.h b/rs_hal.h
index 4e246c4..6a71930 100644
--- a/rs_hal.h
+++ b/rs_hal.h
@@ -87,7 +87,8 @@
     void (*getVersion)(unsigned int *major, unsigned int *minor);
     void (*setPriority)(const Context *, int32_t priority);
 
-
+    void* (*allocRuntimeMem)(size_t size, uint32_t flags);
+    void (*freeRuntimeMem)(void* ptr);
 
     struct {
         bool (*init)(const Context *rsc, ScriptC *s,
