free pointers
programmers tend to think allocating a pointer is free. well, it ain't. try implementing malloc sometime to see why. for starters, the memory manager needs to track your block. so there's some overhead. typically 32 bytes. then there's padding. add 16 byte on average to get to the next 32 byte boundary. and 4 bytes of course for the pointer itself. don't forget the 4 byte pointer to a virtual method table in every instance of your class. big deal. memory's free. allocating and freeing pointers sure isn't. in fact, many memory manglers are written in such a way that one of those operations is constant time and the other is on the order of the number of blocks. that particular feature will eventually bring any computer to a grinding halt. fortunately, we have languages like java that hide all that stuff from us so nobody ever needs to know just how inefficient their code really is.