栈和堆最大可以申请的内存数

原创 2016年05月31日 19:55:53

栈:一个栈对应一个线程

        有限制,VS2010中,默认的栈空间大小为1M(64位和32位系统),可通过CreatThread参数列表改变线程的StackSize;

        最大支持线程数 = 内存/StackSize

堆:与64位/32位有关,与编译器有关,受限于计算机系统中有效的虚拟内存;

       理论上,32位系统,堆内存可以达到4G的空间,但是堆最大也没有4G,因为整个进程的映像空间有一部分被映射给操作系统,另外栈也占据了一部分,全局,静态变量再占据一部分,还有其他代码数据占据一部分.

      操作系统中有记录空闲内存地址的链表,申请时,寻找第一个空间大于申请空间的堆

      VS2010 32位:2G

                     64位:128G(虚拟内存16TB)【C++ 64位下最多4G,C的malloc无限制】



另来自:http://bbs.csdn.net/topics/300107271

Win32在正常情况下,4G内存里有2G分配给用户进程,有2G给系统用.

用户进程的东西像堆,栈,CODE等等都是在2G用户空间里的.

用户可分配的内存总量一般有近2G,

但单独一个可分配的内存块的大小通常不可能达到这个数量级,系统会根据当前进程的地址使用情况来决定.

版权声明:本文为博主原创文章,未经博主允许不得转载。

堆大小设置

堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操...
  • huaweitman
  • huaweitman
  • 2016年08月19日 09:48
  • 1151

vs 2008 win32程序使用大内存 (>2GB)设置

今天用vc 2008调用matlab相机标定工具箱,
  • xuyuhua1985
  • xuyuhua1985
  • 2014年04月06日 21:20
  • 3999

64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多?

前言: cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推。32位操作系统针对的32位的CPU设计。64位操作系统针对的64位的CPU设...
  • pizi0475
  • pizi0475
  • 2013年12月08日 17:09
  • 9293

关于VS编译的程序内存分配只能用1.5~2G上限的优化方案

关于VS编译的程序 内存分配只能用1.5~2G上限的优化方案 遇到的问题是这样的: 电脑内存32G,VS2012编译的一个程序,在程序运行过程中,一旦程序的内存使用达到1.5G,就会抛出内存溢...
  • AAA123524457
  • AAA123524457
  • 2016年03月10日 16:50
  • 1989

栈(stack)上申请内存大小限制问题

#include using namespace std; long int count = 0; void stack() { char msg[1024]; cout
  • boyixuanbo
  • boyixuanbo
  • 2016年10月19日 23:24
  • 877

内存分配及堆与栈的区别

1.内存分配方式   内存分配方式有三种:   [1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。   [2]在栈上创建。...
  • xiao3404
  • xiao3404
  • 2014年05月11日 21:43
  • 2565

函数栈的内存分配大小

在写一个Win32程序时,出现了一个错误,是在写WM_COMMOND里面的消息处理时遇到的,在点击窗口的边框或者最大化最小化时,提示错误:用户回调期间遇到未经处理的异常,然后箭头指向return De...
  • qq_31917799
  • qq_31917799
  • 2016年12月24日 16:06
  • 771

堆内存和栈内存详解

堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变...
  • abcjennifer
  • abcjennifer
  • 2014年10月04日 17:50
  • 21807

面试题——栈的最大值问题

常数时间求栈的最大值 问题描述: 一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。 设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。 可以修改栈的...
  • taotaotheripper
  • taotaotheripper
  • 2013年03月09日 01:53
  • 5433

栈空间的最大值是多少

在windows下,栈地址是向低地址扩展的数据结构,是一块连续的内存区域。栈顶的地址和栈的最大容量是系统预先规定好的,在windows下,栈的大小是2MB,而申请堆空间的大小一般小于2GB 由于内存...
  • u011101683
  • u011101683
  • 2013年10月08日 20:16
  • 2156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:栈和堆最大可以申请的内存数
举报原因:
原因补充:

(最多只允许输入30个字)