c++中堆的大小上限是由什么来决定的?
5个回答
展开全部
一般是有机器内存大小决定的,程序在执行时,已知的内存分配有三种:
1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。
2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。
操作系统在进程调度中会对程序的内存空间会做出适当的调整,
楼上说又机器字长确定的意思是进程的虚拟内存大小由机器字长确定,如32位机的进程虚拟地址空间为2的32次方即4GB!
1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。
2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。
操作系统在进程调度中会对程序的内存空间会做出适当的调整,
楼上说又机器字长确定的意思是进程的虚拟内存大小由机器字长确定,如32位机的进程虚拟地址空间为2的32次方即4GB!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-03-11
展开全部
你试着是写个死循环,然后在死循环语句new内存,看一下计算机的情况如何?
所以,堆是没有限制的,限制内存的是计算机本身整个内存的大小
所以,堆是没有限制的,限制内存的是计算机本身整个内存的大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
机器字长限制的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
size_t(-1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
更多回答(3)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询