When you allocate 128 bytes through "new char[128]", you may not commit any new page of memory!!! My point is that memory allocation is done by the heap manager used by your module. For example, if CRT is the heap manager (msvcrt.dll) you're linking with, all "malloc / new" kind of instructions will be handled by that library, which may reuse previously released memory, or return an address of already commited memory. The heap manager keeps track of your allocations, and commits pages of memory only when needed. For example, on first allocation, a number of pages are commited to support the request. On those pages there's still room for more allocations. Thus, next allocation, if small enough, will not commit more pages, but use the existing commited pages. There're plenty of online resources explaining how a "heap manager" implementation works: http://blogs.technet.com/askperf/archive/2007/06/26/what-a-heap-of-part-one.aspx[^] http://en.wikipedia.org/wiki/Chunking_(computing)[^] http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Marinescu.pdf[^] http://www.freshpatents.com/Methods-systems-and-computer-program-products-for-managing-a-memory-by-storing-external-objects-in-a-dynamic-heap-dt20051215ptan20050278496.php[^] Best regards,
Bornish ESRI Developer Network Compilers demystified - Function pointers in Visual Basic 6.0 En