From 4b26684b9afb11fc7c60b9697157a0bcb962b6bb Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=98=A4=ED=98=95=EC=84=9D/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Tue, 4 Sep 2018 18:51:49 +0900 Subject: [PATCH] Use unique pointer for ANeuralNetworksMemory (#2578) Use unique pointer for ANeuralNetworksMemory to avoid memory leak warning Signed-off-by: Hyeongseok Oh --- runtimes/neurun/src/frontend/memory.cc | 9 +++++++-- runtimes/pure_arm_compute/src/memory.cc | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/runtimes/neurun/src/frontend/memory.cc b/runtimes/neurun/src/frontend/memory.cc index 56bc846..90b4c84 100644 --- a/runtimes/neurun/src/frontend/memory.cc +++ b/runtimes/neurun/src/frontend/memory.cc @@ -1,7 +1,9 @@ #include #include #include +#include +#include "nnfw/std/memory.h" #include "frontend/wrapper/memory.h" int ANeuralNetworksMemory_createFromFd(size_t size, int protect, int fd, size_t offset, @@ -12,11 +14,14 @@ int ANeuralNetworksMemory_createFromFd(size_t size, int protect, int fd, size_t return ANEURALNETWORKS_UNEXPECTED_NULL; } - *memory = new (std::nothrow) ANeuralNetworksMemory{size, protect, fd, offset}; - if (*memory == nullptr) + // Use unique pointer to avoid memory leak + std::unique_ptr memory_ptr = + nnfw::make_unique(size, protect, fd, offset); + if (memory_ptr == nullptr) { return ANEURALNETWORKS_OUT_OF_MEMORY; } + *memory = memory_ptr.release(); return ANEURALNETWORKS_NO_ERROR; } diff --git a/runtimes/pure_arm_compute/src/memory.cc b/runtimes/pure_arm_compute/src/memory.cc index ab55f0e..b44c278 100644 --- a/runtimes/pure_arm_compute/src/memory.cc +++ b/runtimes/pure_arm_compute/src/memory.cc @@ -1,6 +1,8 @@ #include #include +#include +#include "nnfw/std/memory.h" #include "memory.h" int ANeuralNetworksMemory_createFromFd(size_t size, int protect, int fd, size_t offset, @@ -11,12 +13,14 @@ int ANeuralNetworksMemory_createFromFd(size_t size, int protect, int fd, size_t return ANEURALNETWORKS_UNEXPECTED_NULL; } - ANeuralNetworksMemory *memory_ptr = new ANeuralNetworksMemory{size, protect, fd, offset}; + // Use unique pointer to avoid memory leak + std::unique_ptr memory_ptr = + nnfw::make_unique(size, protect, fd, offset); if (memory_ptr == nullptr) { return ANEURALNETWORKS_OUT_OF_MEMORY; } - *memory = memory_ptr; + *memory = memory_ptr.release(); return ANEURALNETWORKS_NO_ERROR; } -- 2.7.4