you should be aware that the default allocator adds extra bytes of memory for each allocation with new you make (I don't know the exact number, something between 4 and 32 bytes) so, instead of 35 bytes being your average allocation, it is in reality 60 bytes. then 13 million of these is about 7 MB which is consistent with your memory usage of 1.3 GB.
You should consider using a small object allocator. The
loki library has one and it is free. You can't use it with
VC++ 6.0, but it works with 2005 etc.
You may want to look at this as well
http://www.ddj.com/cpp/184402039
As to your problem. You have probably corrupted memory somewhere. Are you sure you don't have any first chance access violations before the bad_alloc is thrown?