HeapAlloc累计超过HeapCreate上限没有错误,但是单次Alloc超过上限就异常退出,为什么?
1. HeapCreate设定init为1000字节,max为1500字节
2. HeapAlloc3次600字节,都没有问题。
3. 如果改为HeapAlloc单次分配1800字节,就异常退出了。这是为什么?
源代码:
#include"stdafx.h"#include<windows.h>#include<stdio.h>#include<tchar.h>HANDLE hHeap,hAllo;int _tmain(int argc, _TCHAR* argv[]){ hHeap=HeapCreate(HEAP_GENERATE_EXCEPTIONS,1000,1500); if(NULL==hHeap){ printf("HeapCreate失败\n"); return 1; }/* LPVOID p1=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,600); LPVOID p2=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,600); if(NULL==p2){ printf("p2 failed\n"); return 1; } LPVOID p3=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,600); if(NULL==p3){ printf("p3 failed\n"); return 1; }*/ printf("p4 begin\n"); LPVOID p4=HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1800); if(NULL==p4){ printf("p4 failed\n"); return 1; } return 0;}