That's not a pool allocator, it's a stack allocator.
In the destructor you shouldn't be deleting both memory and at. at is insidememory (and at wasn't created with new), it's already deleted when you delete memory.
The atAmount variable is always zero. What's it for?
Instead of "atAmount + amount > size - 1", you should be using "at + amount > memory + size".
You should merge the allocate method into the constructor, so it's created like: PoolAllocator allocator(1000);
At the moment, someone could call allocate twice, and your class would cause a memory leak.
The allocator should probably be non-copyable, because at the moment if I write PoolAllocator other = allocator; your code will crash.