标题: 你可以分配多大的内存?
作者: Demon
链接: https://demon.tw/programming/how-much-memory-can-you-allocate.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
《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<<10了。。。
这本书我没有纸质版的,电子版的不想看,只是那天百无聊赖时快速浏览了一下,感觉这个程序挺好玩。
如果我没猜错的话你的内存应该是2G,那天一个4G内存的朋友试了一下1<<10,表示毫无压力……