docs: def allocate(self, sim_size):
          """
          The actual allocation primitive for this heap implementation. Increases the position of the break to allocate
          space. Has no guards against the heap growing too large.
  
          :param sim_size: a size specifying how much to increase the break pointer by
          :returns: a pointer to the previous break position, above which there is now allocated space
          """
          size = self._conc_alloc_size(sim_size)
          addr = self.state.heap.heap_location
          self.state.heap.heap_location += size
          l.debug("Allocating %d bytes at address %#08x", size, addr)
          return addr