• 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:
  • 相关阅读:
    C#接口入门学习
    消息队列接收时报错:对消息队列系统的访问被拒绝
    给某做测试的好友的建议
    在不同的Sql Server 数据库服务器(不同机器)导数据。
    如何让开发人员更好测试?
    存储过程初探
    语音报警.NET开发初探
    vs2010下Siverlight开发环境安装
    C# HttpWebRequest 从google服务器获取google的PageRank PR值
    创建进程API CreateProcess Demo
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318420.html
Copyright © 2020-2023  润新知