From fd6556e6e4ef20061cf6232f44d992a4f3d6d828 Mon Sep 17 00:00:00 2001 From: hangq Date: Thu, 20 Aug 2020 15:49:46 +0800 Subject: [PATCH] fix op_parameter free --- mindspore/lite/src/kernel_registry.cc | 8 ++++++++ mindspore/lite/src/kernel_registry.h | 3 ++- mindspore/lite/src/lite_kernel.h | 8 ++------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mindspore/lite/src/kernel_registry.cc b/mindspore/lite/src/kernel_registry.cc index 36c5a767a6..8e3d8a6cf1 100644 --- a/mindspore/lite/src/kernel_registry.cc +++ b/mindspore/lite/src/kernel_registry.cc @@ -108,6 +108,7 @@ kernel::LiteKernel *KernelRegistry::GetKernel(const std::vectorType()); return nullptr; } + this->op_parameters_.emplace_back(parameter); auto creator = GetCreator(key); if (creator != nullptr) { auto kernel = creator(in_tensors, out_tensors, parameter, ctx, key, primitive); @@ -115,4 +116,11 @@ kernel::LiteKernel *KernelRegistry::GetKernel(const std::vector op_parameters_; }; class KernelRegistrar { diff --git a/mindspore/lite/src/lite_kernel.h b/mindspore/lite/src/lite_kernel.h index 6a4a42bc3d..bfe121c6e9 100644 --- a/mindspore/lite/src/lite_kernel.h +++ b/mindspore/lite/src/lite_kernel.h @@ -57,6 +57,7 @@ struct KernelKey { class LiteKernel { public: LiteKernel() = default; + // parameter should be deleted or freed by caller, and should be deleted or freed after LiteKernel is deleted LiteKernel(OpParameter *parameter, const std::vector &in_tensors, const std::vector &out_tensors, const lite::Context *ctx, const mindspore::lite::PrimitiveC *primitive) @@ -72,12 +73,7 @@ class LiteKernel { this->out_kernels_.clear(); } - virtual ~LiteKernel() { - if (op_parameter_ != nullptr) { - delete op_parameter_; - op_parameter_ = nullptr; - } - } + virtual ~LiteKernel() = default; virtual int Prepare() { if (!InferShapeDone()) {