数组下标的范围

mljgxb 2007-06-18 09:02:59
我要给一个数组分配空间,最大可以多少?
比如
int *pLarge;
pLarge = new int[iLength];

iLength的取值范围多大,是不是超过65535就不可以了,如果想要分配更大的一维数组空间怎么办?
...全文
508 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-06-19
  • 打赏
  • 举报
回复
google的一个结果:

VC++下怎样设置栈的大小

方法一:STACKSIZE 定义.def文件

语法:STACKSIZE reserve[,commit]
reserve:栈的大小;commit:可选项,与操作系统有关,在NT上只一次分配物理内存的大小

方法二:设定/STACK

打开工程,依次操作菜单如下:Project->Setting->Link,在Category 中选中Output,然后
在Reserve中设定堆栈的最大值和commit。

注意:reserve默认值为1MB,最小值为4Byte;commit是保留在虚拟内存的页文件里面,它设置的较
大会使栈开辟较大的值,可能增加内存的开销和启动时间
mljgxb 2007-06-19
  • 打赏
  • 举报
回复
呵呵,,,我知道为什么出错了,,,我用的动态分配分配没有错。。。
错在我把下面的iLength定义成unsigned short了。它本身范围就只有65535这么大
unsiged short iLength;
iLength = 65535;
int *pLarge;
pLarge = new int[iLength];
Inhibitory 2007-06-19
  • 打赏
  • 举报
回复
大一点的数组结构都会用动态分配,如果你都把栈用完了,别人就不能用了,这样程序就会因为栈溢出而退出。
iambic 2007-06-18
  • 打赏
  • 举报
回复
>>可是我在VC里面,,,MFC的程序,,,一维脚标超过64K的数据就出错了啊。。。

栈大小限制。可以配置。
Inhibitory 2007-06-18
  • 打赏
  • 举报
回复

可是我在VC里面,,,MFC的程序,,,一维脚标超过64K的数据就出错了啊。。。
-----------------------------------------------------------------------
你用的不是动态内存分配吧,动态内存分配可以达到差不多2G,我前不久还特意试过了,当然,包括了虚拟内存,因为我的内存只有1G。
mljgxb 2007-06-18
  • 打赏
  • 举报
回复
可是我在VC里面,,,MFC的程序,,,一维脚标超过64K的数据就出错了啊。。。
uoyevoli 2007-06-18
  • 打赏
  • 举报
回复
粗略地讲,不能超过一个process的内存空间。Win32应该是2G

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧