code: def fake_new(self, op):
      output_size = len(op.output)
      for i in range(output_size):
          mem_size = self.get_mem_size(op, op.output_shape[i].dims)
          final_mem_block = None
          reused = False
          for mem_block in self.free_mem_list:
              if mem_block.size >= mem_size:
                  mem_block.tensor_name = op.output[i]
                  final_mem_block = mem_block
                  self.free_mem_list.remove(mem_block)
                  mace_check(
                      final_mem_block is not None,
                      "Error: final_mem_block should not be None",
                  )
                  reused = True
                  # print("reuse a tensor mem: %s -> %s" %
                  #       (mem_size, mem_block.size))
                  break
          if not reused:
              final_mem_block = MemBlock(
                  op.output[i], self.buffer_size, mem_size
              )
              self.buffer_size += mem_size
              # print("new a tensor mem: %s" % final_mem_block.size)
  
          # for micro, mem_id is mem_offset
          op.mem_id.append(final_mem_block.offset)
          self.used_mem_list.append(final_mem_block)
  
file_path: mace/tools/python/micro/mem_computer.py
imports: from utils.convert_util import data_type_to_np_dt
  from utils.util import mace_check
  import numpy
label_desc: Use image node_id 5 for calling the MemComputer obj's underlying member method code with example usage: obj.fake_new(op) without return types