线程安全:分配堆与内存 API:HeapCreate HeapAlloc HeapSize HeapFree HeapDestroy
2014-05-08 00:46
453 查看
/* * 创建指定大小的堆 *判断当前进程堆的个数 *在指定的堆上分配内存 *获取 堆分配的内存块的大小 * 释放堆分配的内存 *销毁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 创 4000 建一个指定大小的堆 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); //分配内存大小,in byte //判断是否成功 if(lpMemory==NULL) { cout<<"allocate memory fail,code is : "<<GetLastError()<<endl; return; } //5 获取 hHeap堆分配的 lpMemory指向的内存块的大小 dwHeapSize=HeapSize( hHeap, //堆句柄 HEAP_NO_SERIALIZE, lpMemory); //堆上分配内存指针 Sleep(10); //6 释放堆分配的内存 flag=HeapFree( hHeap, HEAP_NO_SERIALIZE, lpMemory); if(flag==NULL) { cout<<"free memory fail,code is : "<<GetLastError()<<endl; return; } Sleep(10); //7 销毁HeapCreate 创建的堆 flag=HeapDestroy(hHeap); if(flag==NULL) { cout<<"destroy heap fail,code is : "<<GetLastError()<<endl; return; } }
相关文章推荐
- 不同内存分配方式的区别 VirtualAlloc HeapAlloc malloc new
- 关于jvm内存分配的问题heap size [268435456] not equal to maximum heap size [2147483648],需要修改的jvm配置
- HeapAlloc GlobalAlloc new等内存分配的区别
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- 102-资源打包,内存分配,内存泄漏,私有API,硬件信息的获取,使用imageName加载图片和使用imageWithContentsOfFile加载图片的场合优缺点及内存分析
- 使用二级指针分配和释放内存示例 malloc(), free()
- 动态内存分配及Malloc/free的实现
- c/c++ 补漏之动态内存分配,malloc,free,new delete (一)
- Java线程安全问题,方法及内存模型
- 尽量使用new/delete操作符,而不是malloc/free来分配内存-------Effective C++学习笔记
- malloc()与 alloc()等内存分配方式
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- android 应用 heap size分配
- 内存控制篇calloc free getpagesize malloc mmap munmap
- 内存储器管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- Android查看内存使用的方式(Running services、MemoryInfo、getNativeHeapSize) 整理的不错
- Linux中的内存分配和释放之__alloc_boot函数分析
- MYSQL,innodb_buffer_pool_size内存分配方式
- new/delete、malloc/free、GlobalAlloc/HeapAlloc/VirtualAlloc、GlobalLock/GlobalUnlock等
- [转]查找项目中的线程不安全API使用