1,c语言中最大可以申明多大的数组

由于数组申请的是连续存储空间,所以存在最大申请的限制,也就是说最大申请空间不能大于当前的栈空间栈空间是可调的,默认的应该为1M,但是最大值也不会大于全部栈的总size如果是动态申请的话(例如,动态数组,链表等),则和堆的大小有关系

c语言中最大可以申明多大的数组

2,C语言的数组最大可以定义多长求高手解答请不要很笼统说是系统内存什

数组只是一个语法概念,可以认为你是要分配一段连续的内存,在应用层有2种方式:全局变量的方式,在函数外声明,最大应该不能超过4G Byte(32bit寻址最大值),int就除与4,doubel再除2局部变量的方式,在函数内声明,属于栈内存,就更小,确实跟操作系统和C库相关,进程都有栈限制的,可以输入命令ulimit查看,默认也就10K左右,当然你可以设置更大。不会有数专门说这个数组大小的问题,它涉及的知识点会,栈内存,data 段,以这些为关键字去看,整理理解吧。

C语言的数组最大可以定义多长求高手解答请不要很笼统说是系统内存什

3,STM32局部变量的数组最大能到多少

根据你提供的信息,推测你使用的应该是Tiny C Complier编译器,这是一个32位的编译器,那么int应该为32位,4个字节。先看看数组的大小,int a[664579],那么大小为664579×4=2658316,也就是2.5MC语言的局部变量在在栈上分配空间,TCC默认的栈大小为1M,显然会造成栈溢出,程序崩溃。最新版的TCC提供了自定义栈大小的参数,如下面:tcc -Wl,--stack=4194309将栈大小指定为4M。不知道你的TCC版本是否支持这个参数。而全局变量在堆上分配空间,Win32应用程序可访问的地址空间是4G,一般来说进程实际能使用的是远远达不到这个值,但是在放一个2.5M的数组还是绰绰有余的。所以作为全局变量程序可正常运行。所以程序中要使用大型数组,要么定义为全局变量,要么使用malloc一类的函数在堆上动态分配空间。

STM32局部变量的数组最大能到多少


文章TAG:局部c  局部变量最大能设在多少  c语言中最大可以申明多大的数组  
下一篇