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来了...
发达了...
阅读(1486) | 评论(0) | 转发(0) |