文章关键字 ‘C专家编程’

你可以分配多大的内存?

2010年12月7日,星期二

《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会有很神奇的事情发生哦~