You missed one fine point in your test (beside what Paul mentioned).

The first time through your loop, you allocate 4 bytes (but you never free that). The second time through you allocate 8 bytes...