程序最多能 new 多少内存
根据《Windows 核心编程》得知:X86 操作系统提供每个程序
最多只有 4G 的虚拟内存,其中 2G 虚拟内存提供给系统用(具体用
来干什么还待考察),还有 2G 的内存留给用户使用。那这 2G 内存
能拿来干嘛呢?首先给你介绍程序内存的 5 大区:栈区,堆区,全
局区(静态区),文字常量区,程序代码区。这 5 大区就只能可怜
的蜗居在这 2G 的内存里,所以我们要好好的珍惜这 2G 内存了!大
部分程序员在申请堆时都习惯使用 new,因为它简单好用,但很多
一部分程序员不清楚我能 new 多少内存!这时候就得看你的除了堆
区其余 4 大分区占用了多少内存了,总之 new 的内存不能超过 2G。
当你的程序 5 大分区总共占用了 2G 内存时,你还需要 new 内存的话,
这时候系统不会告诉你内存不足,而是程序直接崩掉!所以很多程
序因为 new 的内存忘记释放,久而久之,总用户内存超过 2G 时,
程序就直接崩掉。这时候你肯定会问,我么应该怎么解决这个问题
呢?由于我们无法统计用户内存使用了多少,还能 new 多少?还好
微软给我们提供了很好的分配堆方法,就是用 HeapAlloc 分配堆。在
调用 HeapAlloc 之前必须先调用 HeapCreate 创建辅助堆栈,记得
HeapCreate 与 HeapFree,HeapAlloc 与 HeapDestroy 一一对应,就跟
new 与 delete 一样。HeapAlloc 不但具有 new 的功能,而且 HeapAlloc
评论0
最新资源