c/c++怎样定义int a[10个G]的全局变量才能使用

冰河漩涡 2015-05-29 12:30:26
如题:c/c++怎样定义int a[10个G]的全局变量才能使用,跟硬件和编译器有关吗?请回答越详细越多越好。谢谢!!
...全文
598 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2015-05-30
  • 打赏
  • 举报
回复
另外, 这么大的数据放内存没意义,可以考虑放硬盘,如果哪部分读取频率高,把那一部分提到内存
paschen 2015-05-30
  • 打赏
  • 举报
回复
这么大的内存,只有动态分配,否则你栈哪够这么多,而且动态分配也不一定能分配得到这么大
均陵鼠侠 2015-05-30
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] 用文件读写模拟内存读写,参考_fseeki64函数(Windows),fseeko64(Linux)。
如果你硬盘空间够的话, int a[10个T];也毫无违和感!(刚学会这套词,可找到地方捅一捅啦!)[/quote] 要看楼主要的是真正的数组,还是一个类似缓冲区的东西。 如果要的是一个真正的数组,那么,首要的问题是进程的虚拟地址空间是否足够。指针的加、减、++、--、地址比较运算以及解引用倒还可以通过底层转换来对用户透明,但是,最最要命和核心的问题是,请考虑一下,如果要输出每个元素的(线性)地址,底层该怎么办。 举个例子,对于32位x86体系+WINDOWS,考虑到OS内核占用每个任务(进程)的一半虚拟地址空间,故理论上的数组长度为2^32个char。 如果要的仅仅是一个类似于缓冲区的东西,对元素地址的连续性没有要求,多大内存都不是问题。
pengzhixi 2015-05-30
  • 打赏
  • 举报
回复
引用 12 楼 Zof_A 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] 用文件读写模拟内存读写,参考_fseeki64函数(Windows),fseeko64(Linux)。
就是只要求应用全局整型10G数组,只在内存应用,其它软硬件,编译器什么都可以调整,都用什么、还需要调配什么,求推荐[/quote]不要挣扎了。谁也满足不了你
冰河漩涡 2015-05-30
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
用文件读写模拟内存读写,参考_fseeki64函数(Windows),fseeko64(Linux)。
就是只要求应用全局整型10G数组,只在内存应用,其它软硬件,编译器什么都可以调整,都用什么、还需要调配什么,求推荐
huanglin03 2015-05-30
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] 用文件读写模拟内存读写,参考_fseeki64函数(Windows),fseeko64(Linux)。
如果你硬盘空间够的话, int a[10个T];也毫无违和感!(刚学会这套词,可找到地方捅一捅啦!)[/quote] 莫非你LOL的时候也爱用赵信?
老王爱上猫 2015-05-29
  • 打赏
  • 举报
回复
为什么有这样的需求,可以提下具体需求场景...
Saleayas 2015-05-29
  • 打赏
  • 举报
回复
这么大的空间,已经不是编译器的事情了,而是你自己的事情了。
pengzhixi 2015-05-29
  • 打赏
  • 举报
回复
等进程空间破了4G再说吧
fly_dragon_fly 2015-05-29
  • 打赏
  • 举报
回复
目前应该不太可能,编译器不允许这么大,就算允许,系统也没地方能运行
赵4老师 2015-05-29
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
用文件读写模拟内存读写,参考_fseeki64函数(Windows),fseeko64(Linux)。
如果你硬盘空间够的话, int a[10个T];也毫无违和感!(刚学会这套词,可找到地方捅一捅啦!
老而不死 2015-05-29
  • 打赏
  • 举报
回复
表示RAM放不下
ForestDB 2015-05-29
  • 打赏
  • 举报
回复
你有这么大的物理内存?
赵4老师 2015-05-29
  • 打赏
  • 举报
回复
用文件读写模拟内存读写,参考_fseeki64函数(Windows),fseeko64(Linux)。
oN5GrzoN 2015-05-29
  • 打赏
  • 举报
回复
10G*8,内存就要80G,还不如放数据库里
ID870177103 2015-05-29
  • 打赏
  • 举报
回复
10G=2^31
那至少是64位,并且是static才有可能编译通过吧

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧