/*
* 创建指定大小的堆
*判断当前进程堆的个数
*在指定的堆上分配内存
*获取 堆分配的内存块的大小
* 释放堆分配的内存
*销毁HeapCreate 创建的堆
*/
#include<windows.h>
#include<iostream>
using namespace std;
void main()
{
//定义变量
HANDLE hHeap; //堆句柄
SYSTEM_INFO si; //定义结构
DWORD dwHeapNumber; //堆的数量
HANDLE hHeaps[24]; //堆句柄数组,
LPVOID lpMemory; //指向堆分配的内存
size_t dwHeapSize; //分配的内存字节数
BOOL flag; // 标志
//1 获取系统信息
GetSystemInfo(&si);
//2 创建一个指定大小的堆
hHeap=HeapCreate(
HEAP_NO_SERIALIZE, //堆属性
si.dwPageSize*4 , //初始化字节数,上舍人页大小的整数倍。The value is rounded up to the next page boundary.
si.dwPageSize*8); //最大分配字节数,页大小的整数倍 未0则自动增长 直到内存耗完
//判断创建是否成功
if(hHeap==NULL)
{
cout<<"create heap fail,code is : "<<GetLastError()<<endl;
return;
}
//3 判断当前进程堆的个数
dwHeapNumber=GetProcessHeaps(
24,
hHeaps);
//4 在指定的堆上分配内存
lpMemory=HeapAlloc(
hHeap,
HEAP_ZERO_MEMORY,
si.dwPageSize*2); //分配内存
线程安全:分配堆与内存 API:HeapCreate HeapAlloc HeapSize HeapFree HeapDestroy
最新推荐文章于 2021-12-28 09:27:44 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)