diff --git a/projects/rocblas/clients/common/host_alloc.cpp b/projects/rocblas/clients/common/host_alloc.cpp index 3911ec787bf0..dca318d8feeb 100644 --- a/projects/rocblas/clients/common/host_alloc.cpp +++ b/projects/rocblas/clients/common/host_alloc.cpp @@ -54,11 +54,20 @@ void alloc_ptr_use(void* ptr, size_t size) void free_ptr_use(void* ptr, bool call_free) { std::lock_guard lock(mem_mutex); - if(ptr && mem_allocated[ptr]) + auto it = mem_allocated.find(ptr); + + if(ptr && it != mem_allocated.end()) + { + mem_used -= it->second; + mem_allocated.erase(it); + } + else if(ptr && call_free) { - mem_used -= mem_allocated[ptr]; - mem_allocated.erase(ptr); + rocblas_cerr << "Warning: Freeing untracked pointer " << ptr + << " - untracked memory released (potential double-free or memory corruption)" + << std::endl; } + if(call_free) free(ptr); }