你可以分配多大的内存?

标签: , ,

《C专家编程》中的一个程序,觉得挺有意思,记录一下。

运行下列程序,看看在你的进程中可以分配多大的内存。

#include <stdio.h>
#include <stdlib.h>
main() {
    int Mb = 0;
    while ( malloc(1<<20)) ++Mb;
    printf("Allocated %d Mb total\n", Mb);
}

总共分配的内存量取决于交换区和你的系统配置中的进程限制。如果实际分配的内存块小于1M字节,你实际得到的内存是否比这要多一些?为什么?

为了让这个程序能够在有内存限制的MS-DOS上运行,把每次分配的单元从1MB改为1KB(就是把1<<20改为1<<10,并用KB代替MB)。

在我的系统物理内存为2GB,可以分配的内存大概是1880MB,你的系统呢?

另,在Windows系统中把1<<20改为1<<10会有很神奇的事情发生哦~

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. eXeScope注册码算法
  2. 用JavaScript实现PHP的urldecode函数
  3. jQuery图片延迟加载插件——Lazy Load
  4. PHP读取纯真IP数据库QQWry.dat
  5. VBS实现GB2312转Unicode

2 条评论 发表在“你可以分配多大的内存?”上

  1. Tanky Woo说道:

    唉,看来我看书不仔细了,这本书看过几遍,都没注意这段代码。

    不过刚去试了,结果悲剧了。。。。
    果断强行关机,重启。不过我不敢再试1<<10了。。。

    • Demon说道:

      这本书我没有纸质版的,电子版的不想看,只是那天百无聊赖时快速浏览了一下,感觉这个程序挺好玩。

      如果我没猜错的话你的内存应该是2G,那天一个4G内存的朋友试了一下1<<10,表示毫无压力……

留下回复