+ -
当前位置:首页 → 问答吧 → linux X86 下果然最大能使用3G的内存!

linux X86 下果然最大能使用3G的内存!

时间:2010-08-26

来源:互联网

本帖最后由 zhangsuozhu 于 2010-08-26 14:39 编辑

啥也不说了。上代码!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     unsigned i = 0;
  6.     char *p;
  7.     for (i = 0; i <0xffffffff>>12; i++)
  8.     {
  9.         if ((p =malloc(0xfff)) == NULL)
  10.         {
  11.             printf("i = %x alloc fail!\n", i<<12);
  12.             return 0;
  13.         }
  14.     }
  15.     return 0;
  16. }
复制代码

作者: zhangsuozhu   发布时间: 2010-08-26

一次成功?

你每次4k 4k的来。

作者: 梅川内依酷   发布时间: 2010-08-26

可以分。但不可以用!

作者: zhangsuozhu   发布时间: 2010-08-26

你居然敢不测试 malloc() 的返回值?

作者: langue   发布时间: 2010-08-26

回复 langue


    有道理。忘了。

作者: zhangsuozhu   发布时间: 2010-08-26

改了。分到 i = bf726000 alloc fail!

作者: zhangsuozhu   发布时间: 2010-08-26

系统对每个进程能使用的内存也有额外的限制

作者: hellioncu   发布时间: 2010-08-26

我觉得不够严谨~

应该说 linux的用户空间在x86架构下最大可以使用3G内存~

作者: superfight   发布时间: 2010-08-26

去看看内核mm这块的代码就会发现你的想法多么可笑.不过先去检查一下你系统里的limits.conf看看.可以很付责任地告诉你,我在用户态超过48g的内存分配也没有失败过.

作者: samlumengjun   发布时间: 2010-08-26



QUOTE:
去看看内核mm这块的代码就会发现你的想法多么可笑.不过先去检查一下你系统里的limits.conf看看.可以很付责任 ...
samlumengjun 发表于 2010-08-26 15:13




    兄弟,这是交流的地方,别人格攻击啊。。

作者: pengjianbokobe   发布时间: 2010-08-26



QUOTE:
兄弟,这是交流的地方,别人格攻击啊。。
pengjianbokobe 发表于 2010-08-26 15:24




    不明白我哪里人格攻击过了?哪个字或者词是人格攻击?请指教.

作者: samlumengjun   发布时间: 2010-08-26

额,内核就要占1G了吧。。
而且你开了PAE之后就可以分更多了。

作者: davelv   发布时间: 2010-08-26

强烈关注此贴.

c专家里好像就有个这样的例子吧.

作者: pandaiam   发布时间: 2010-08-26