diff --git a/src/storage/slog_ckpt/ob_linked_macro_block_reader.h b/src/storage/slog_ckpt/ob_linked_macro_block_reader.h index f35e15930b..45a61cc4b3 100644 --- a/src/storage/slog_ckpt/ob_linked_macro_block_reader.h +++ b/src/storage/slog_ckpt/ob_linked_macro_block_reader.h @@ -28,7 +28,15 @@ class ObLinkedMacroBlockReader final { public: ObLinkedMacroBlockReader(); - ~ObLinkedMacroBlockReader() = default; + ~ObLinkedMacroBlockReader() + { + macros_handle_.reset(); + handles_[0].reset(); + handles_[1].reset(); + // Need to pay attention!!! + // The allocator is used to allocate io data buffer, and its memory life cycle needs to be longer than the object handle. + allocator_.reset(); + } ObLinkedMacroBlockReader(const ObLinkedMacroBlockReader &) = delete; ObLinkedMacroBlockReader &operator=(const ObLinkedMacroBlockReader &) = delete;