Win32堆
来源:互联网 发布:java四则运算程序 编辑:程序博客网 时间:2024/06/10 02:21
在16位的系统中堆有全局堆和局部堆的区别,而在win32中,则没有这个概念,堆是进程空间的一块保留区域,当我们在堆上分配内存时,系统才将保留区域提交到内存,对一个进程来讲,它有一个缺省堆,默认大小为1M,进程的所有线程都在这个堆上进行动态内存操作,而系统也有一个内存管理链表来管理这个堆,标示堆上的空闲与已经使用区域。系统对堆的管理,默认情况下是采取序列化的操作,即同时只能有一个线程对堆进行操作,起到一个保护作用。
我们也可以为进程创建自己的堆,其优点主要有3个,首先是数据安全性的考虑,当在堆上存储多种数据结构的数据时,对一个数据结构的误操作,可能破坏另外一个数据结构,因此,可以创建多个堆,不同的堆存储不同的数据结构的数据,就不会出现开始的情况,其二在于能有效的进行内存管理,避免浪费内存,其3在于可以提高程序的性能,如果不同结构的数据存放在一个堆中,可能导致同一个结构存放在不同的页面文件中,当我们去访问时,需要不断的切换页面文件,增加了系统开销,而用不通的堆来存储时,就可以减少和避免上述情况,从而提高性能。
创建堆的主要API如下:
GetProcessHeap() //获得进程的缺省堆
HeapCreate() //创建堆
HeapAlloc() //在堆上分配内存
HeapReAlloc() //重新分配内存
HeapSize() //获取堆上内存的大小
HeapFree() //释放堆块
HeapDestroy() //释放堆
GetProcessHeaps() //获取进程的堆
HeapValidate() //堆有效性检查
HeapLock() //加锁
HeapUnlock() //减锁
- Win32堆
- windows程序员进阶系列:《软件调试》之Win32堆
- windows程序员进阶系列:《软件调试》之Win32堆 (二)
- 有关win32平台下调试堆的描述(Win32 Debug CRT Heap) (下)
- (转载)有关win32平台下调试堆的描述(Win32 Debug CRT Heap) (实战篇)
- [置顶]有关win32平台下调试堆的描述(Win32 Debug CRT Heap) (上)
- win32
- wiN32
- Win32
- WIN32
- win32
- Win32
- Win32
- WIN32
- win32
- WIN32
- windows程序员进阶系列:《软件调试》之Win32堆的调试支持
- windows程序员进阶系列:《软件调试》之Win32堆的调试支持 (三)
- 容易忘记的css用法
- 一个从业10年的程序员,给程序员小弟弟小妹妹们的几点忠告(从VeryCD上看到的评论,分享给大家)
- 2099 整除的尾数
- 继续聊WPF——依赖项属性(1)
- java环境变量的设置
- Win32堆
- Eclipse快速上手指南之使用JUnit
- PB日志-数据窗口控件函数67.GroupCalc()
- 让Google工具栏永远支持(兼容)Firefox,不管是Firefox7、Firefox8、Firefox9
- java读取配置文件的几种方法
- GAE中Java Servlet 环境下日志记录配置
- 序言
- 10g 手动配置EM
- 性格决定成败