对于c++中数组的最大长度的理解

您所在的位置:网站首页 float数组长度 对于c++中数组的最大长度的理解

对于c++中数组的最大长度的理解

2023-09-18 15:26| 来源: 网络整理| 查看: 265

静态分配的局部数组,使用的是栈上的空间,因此静态分配得到的局部数组的大小受限于栈的大小。具体来说是数组所在函数栈帧的大小,当然栈帧的大小肯定不能超过栈的大小。如果你对编译器的使用比较熟悉或者你阅读过编译器文档的话,你应该知道如何调整栈帧的大小限制。在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将会提示溢出。

一般一个进程的栈空间是2M,所以你定义过大的int型数组肯定直接溢出。可以算一下: 一个int占4字节,如果定义数组的话,那么2M/4=500K,当然进程启动本身就要很多东西要入栈,所以比500K要小。500K=500,000B,所以可以认为int数组的最大范围是500,000(估计),char类型的最大范围是2000,000。

PS:这里的B是指字节。int是4字节:也就是4*8=32位。所以int的理论最大值是 2^32 -1。但是因为要考虑正负号,所以实际上是:-2147483648~2147483647[-2^31~2^31-1]。int的大小与计算机的数据字长,和编译器都相关;而数组的大小由栈空间,int的大小决定;所以综上:数组的最大长度由进程栈空间,计算机数据字长,编译器决定。具体不展开了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3