整型数组的大小问题

音无八重 2018-03-07 03:30:29
描述: #define定义一个常量MAX,当MAX=100000时可以成功定义一个整型数组a[MAX],但是一旦MAX定义大小为1000000(多了一个零),定义的这个数组a便不能成功运行.请问这是为什么?
使用的IDE是dev-c++
...全文
460 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-03-08
  • 打赏
  • 举报
回复
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。 容量大小从小到大:栈≤全局数据≤堆≤文件≤硬盘≤磁盘阵列≤云存储 当程序需要使用比如2GB~1TB左右的存储时,最简单的办法恐怕得是用文件读写模拟内存读写了吧。windows参考_fseeki64函数,linux参考fseeko64函数。
FILE *fA;fA=fopen("A","rb+");_fseeki64(fA,10000000000i64*sizeof(int),SEEK_SET);fputc(fA,0);//int A[10000000000];
int B;
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fread(&B,1,sizeof(int),fA);//B=A[9999999999];
_fseeki64(fA,9999999999i64*sizeof(int),SEEK_SET);fwrite(&B,1,sizeof(int),fA);//A[9999999999]=B;
fclose(fA);
zhagoodwell 2018-03-07
  • 打赏
  • 举报
回复
把你要用的数组,放在全局变量的位置~即可运行
  • 打赏
  • 举报
回复
数组作为全局变量,或者声明为static
wallesyoyo 2018-03-07
  • 打赏
  • 举报
回复
我只知道在VS里面怎么设置啊。
引用 4 楼 Rhiney_97 的回复:
[quote=引用 1 楼 wanggui2015 的回复:] 堆栈空间溢出啊。 你可以尝试修改 堆栈保留大小,或者使用new的方法在堆上分配空间。
那请问dev-c++怎么设置堆栈大小? 网上找了半天也没找到方法.... [/quote]
音无八重 2018-03-07
  • 打赏
  • 举报
回复
引用 3 楼 codedoctor 的回复:
因为超过了分配给程序的最大栈容量,推荐使用new和malloc的方式动态在堆上申请数组
有道理!
音无八重 2018-03-07
  • 打赏
  • 举报
回复
引用 1 楼 wanggui2015 的回复:
堆栈空间溢出啊。 你可以尝试修改 堆栈保留大小,或者使用new的方法在堆上分配空间。
那请问dev-c++怎么设置堆栈大小? 网上找了半天也没找到方法....
codedoctor 2018-03-07
  • 打赏
  • 举报
回复
因为超过了分配给程序的最大栈容量,推荐使用new和malloc的方式动态在堆上申请数组
大米粥哥哥 2018-03-07
  • 打赏
  • 举报
回复
不能成功运行报什么错 或者有什么提示 栈溢出么
wallesyoyo 2018-03-07
  • 打赏
  • 举报
回复
堆栈空间溢出啊。 你可以尝试修改 堆栈保留大小,或者使用new的方法在堆上分配空间。

64,634

社区成员

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

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