So from my understanding of how the stack works. Nothing ever gets removed explicitly from the stack(data is replaced instead). Think of it like this. The pointer starts from the top. To push an item, you move the pointer down before adding the item to the stack, and then when pulling(getting data from the stack), you simply decrease the pointer by one. Note: since you moved up, the next push will ignore that there was some data down there and replace it.