A. 数组最多能开多大
一般这个问题只与操作系统有关,当然编译系统要是相关操作系统下的。
在完美32位环境,只要你整个程序的内存不超过2^32字节都可以,你的数组只要几M内存,很容易就能实现。
几乎任何语言都支持。不过那些DOS时代的TURBO PASCAL就不行了哦,它们有64K内存限制,单个变量不能那么大的。当然也有办法解决,就是使用链表,可以不断分配空间,直到640K基本内存使用完毕。
遇到这类问题,你可以自己测试一下,写个简短程序,FOR循环给数组赋值,再FOR一下求个和。
B. c语言数组在内存中是怎么分配的
使用C语言编程,实际上使用的内存只有一种虚拟内存。根据功能的不同在C语言中又将虚拟内存为分三类:栈区、堆区、静态数据区,无论单一变量还是数组,其内存分配都是如此;
1、栈区:一般每一个函数对应一个栈区,在编译原理中称为栈帧;
2、静态数据区:这实际上对应于生成的可执行文件的data区段,因为这个区段在生成的可执行文件中,因此是“静态的”;
3、堆区:堆区是最复杂的,有操作系统负责堆管理,但是当用C语言编译器生成一个可执行文件并且运行时,它会默认建立一些堆。