code: def _free(self, ptr):
          
          raise NotImplementedError("%s not implemented for %s" % (self._free.__func__.__name__,
                                                                   self.__class__.__name__))
docs: Handler for any libc `free` SimProcedure call. If the heap has faithful support for `free`, it ought to be
          implemented in a `free` function (as opposed to the `_free` function).
  
          :param ptr: the location in memory to be freed