C语言的数组最大可以定义多长,求高手解答,请不要很笼统说是系统内存什么的还是硬件限制,麻烦详细解释一

2024-12-01 02:52:33
推荐回答(4个)
回答1:

数组只是一个语法概念,可以认为你是要分配一段连续的内存,在应用层有2种方式:

  1. 全局变量的方式,在函数外声明,最大应该不能超过4G Byte(32bit寻址最大值),int就除与4,doubel再除2

  2. 局部变量的方式,在函数内声明,属于栈内存,就更小,确实跟操作系统和C库相关,进程都有栈限制的,可以输入命令ulimit查看,默认也就10K左右,当然你可以设置更大。


不会有数专门说这个数组大小的问题,它涉及的知识点会,栈内存,data 段,以这些为关键字去看,整理理解吧。

回答2:

应该是65535个字节的位置
一个32位的小程序,申请的内存空间是65535个字节大小,多了报错
也就是说所有的变量所占用的空间不能超过65535个字节,要不然编译不通过,呵呵

回答3:

c语言嘛,应该是想多大就多大,当然得保证不会更改其他进程的内存前提下,毕竟数组定义是申请一段连续空间。
你也可以通过malloc函数申请很大的空间,几万即十万都没什么问题……当然内存最好有那么大的连续空间

回答4:

这个跟你的系统配置【栈大小】有关:
定义的变量空间都是在栈上的。