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