char数组最大长度

Q: 请问char数组最大能多少?是否无法超过1024?


 


我指定char   test[300*1024]的时候没有任何问题,而char   test[1024*1024]就会出错,是否char[]无法超过1024*1024?  


  因为我需要在程序运行中,读取一个文件到内存,而文件大小不固定,大多数时候超不过300k,但是考虑到万一超过300k的情况,所以希望设置大一点。 


A1: 


需要更大的内存空间,可以使用动态内存分配,最大不超过2G(看你的机子内存而定)  ,可以用new   或   malloc  


A2:


只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出   
  在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。 so.综上。Bomb....栈暴了。。。


A3:


在VC中栈的缺省值为1M,所以当你分配1024*1024个char后,栈就溢出了。读取文件时,一般来说不会全部读入,只读要用的部份,如果必须全部读入,大多数使用堆上内存。如果确有需要,在VC中是可以调整栈内存的大小,选项是/statck.  


A4:


实用共享内存文件影射方式,UNIX上可以处理几十个G的数据,在PC机上没试过   
  另外,建议修改程序结构,不要因为程序的原因影响应用功能。


A5:


学习!如果是需要   超过实际内存空间的大小,那还是申请硬盘空间好了.   
  最好自己做个虚拟内存,页交换,表交换什么的...这样子过不了多少时间,可以搞个os来了...   
  发达了...


A6: