diff --git a/mindspore/lite/src/lite_session.cc b/mindspore/lite/src/lite_session.cc index 8e01ac7ced..1504b14939 100644 --- a/mindspore/lite/src/lite_session.cc +++ b/mindspore/lite/src/lite_session.cc @@ -547,6 +547,7 @@ LiteSession::~LiteSession() { mindspore::lite::NPUPassManager::GetInstance()->Clear(); mindspore::lite::NPUManager::GetInstance()->Reset(); #endif + delete (model_); is_running_.store(false); } @@ -723,7 +724,7 @@ session::LiteSession *session::LiteSession::CreateSession(const char *model_buf, return nullptr; } model->buf = nullptr; - delete (model); + (reinterpret_cast(session))->set_model(model); return session; } } // namespace mindspore diff --git a/mindspore/lite/src/lite_session.h b/mindspore/lite/src/lite_session.h index 91e47bf5eb..7cbbfadfc6 100644 --- a/mindspore/lite/src/lite_session.h +++ b/mindspore/lite/src/lite_session.h @@ -66,6 +66,8 @@ class LiteSession : public session::LiteSession { int Resize(const std::vector &inputs, const std::vector> &dims) override; + void set_model(Model *model) { this->model_ = model; } + protected: static void ConvertTensorsQuantParam(const schema::Tensor *src_tensor, lite::Tensor *dst_tensor); @@ -123,6 +125,7 @@ class LiteSession : public session::LiteSession { // graph output tensor name -- output tensor std::unordered_map output_tensor_map_; Executor *executor_ = nullptr; + Model *model_ = nullptr; std::atomic is_running_ = false; #if SUPPORT_GPU && !SUPPORT_TRAIN opencl::OpenCLRuntimeWrapper ocl_runtime_wrap_;