Next
Previous
9. Known bugsHeapCheck uses the paging hardware of your machine to place an extra guard page before or after each allocation your program makes. A page is 4096 bytes for the vast majority of today's CPUs, which means that the memory requirements of your program can increase beyond usual. Of course these requirements vanish when you compile your Release versions, but still, make sure you have plenty of physical memory and/or swapfile for your Debug versions. For example, the default settings of HeapCheck create an 8MB heap. This consists of 8*1048576/4096 = 2048 pages. If you make 1024 allocations of 1 byte each, you'll exhaust this heap (each allocation reserves one data and one guard page). This is the worst case scenario, of course, but it shows how quickly memory fills up with HeapCheck. From version 1.2 onward, guard pages no longer occupy physical storage, which will lower your actual memory requirements by up to 50%. You'll probably have to increase MAX_ALLOCATABLE_BLOCK in most cases though...(you'll know when to do this, because HeapCheck will give you an assertion when the heap is exhausted). Next Previous |