C语言数组问题

神秘嘉宾07 2013-04-04 02:55:45
定义一个数组:
int array[1500][1500]
在使用这个数组时就发生“段错误”,
请问各位,C语言不允许这么大的二维数组???

我的系统是Ubuntu linux,编译器gcc 4.4.3。
...全文
293 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
IanLuo1031 2013-04-09
  • 打赏
  • 举报
回复
静态数组肯定在栈中分配,但是栈压根就没有那么的空间呀
pecdew 2013-04-09
  • 打赏
  • 举报
回复
可以用 不过要申请动态空间更好
jogger007 2013-04-09
  • 打赏
  • 举报
回复
引用 7 楼 AnYidan 的回复:
static int array[1500][1500]; 你在 stack 上申请如此大的数组?
static不在栈上 在数据区里
whizer 2013-04-09
  • 打赏
  • 举报
回复
要么用malloc申请,要么弄成全局的,不要搞成局部的.
赵4老师 2013-04-09
  • 打赏
  • 举报
回复
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。
常如意 2013-04-09
  • 打赏
  • 举报
回复
超越栈区了 亲
一群人的拼搏 2013-04-04
  • 打赏
  • 举报
回复
自己可以定义一个较大的栈..
hello_duoduo 2013-04-04
  • 打赏
  • 举报
回复
程序的栈空间的大小为2M,显然是超出了栈的容量,可以动态分配啊……
ForestDB 2013-04-04
  • 打赏
  • 举报
回复
sizeof(int) * 1500 * 1500 == 9000000 == 9M 一般栈空间也就1M大小,而这个数组是在栈上分配的,显然不够空间。
AnYidan 2013-04-04
  • 打赏
  • 举报
回复
static int array[1500][1500]; 你在 stack 上申请如此大的数组?
xiaoqiao_82 2013-04-04
  • 打赏
  • 举报
回复
不是编译器的限制,应该是操作系统的限制。
yubao669016 2013-04-04
  • 打赏
  • 举报
回复
我就一个菜鸟,说错了你们别怪我啊,我在Vc6上也试了一下,我的结果是:无论我是定义数组,还是用new动态申请如果申请的数过大的话都会报错,我想有可能是编译器就是这么规定的,不能超过某个值,或者你的内存没有你要申请的那么大,定义数组的话是在栈内吧,new动态申请的是在堆中吧,好像都有大小的限制。
大极张三疯 2013-04-04
  • 打赏
  • 举报
回复
是不是和系统存储设备有关呢?
明月书君 2013-04-04
  • 打赏
  • 举报
回复
引用 2 楼 gao453068615yan 的回复:
缩小是可以用, 可是遇到需要用大数组的时候只能动态申请么? 引用 1 楼 shao_winds 的回复:亲测把数组缩小就好用 貌似是不能这么大吧
如果动态数组超出了你的内存应该一样不能用。 如果你需要很大的数组的话,你能确定数组的维数吗,确定不了当然用动态申请好啊,否则那么大的数组会造成很多浪费的啊
神秘嘉宾07 2013-04-04
  • 打赏
  • 举报
回复
缩小是可以用, 可是遇到需要用大数组的时候只能动态申请么?
引用 1 楼 shao_winds 的回复:
亲测把数组缩小就好用 貌似是不能这么大吧
明月书君 2013-04-04
  • 打赏
  • 举报
回复
亲测把数组缩小就好用 貌似是不能这么大吧

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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