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

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__))