Rather than allocating a new block every time it is needed, it will check the other end of the outer array to see if blocks are available but not in use. This way, if a deque is being used like a queue, the block count will not arbitrarily grow.