您的位置:首页 > 其它

malloc能分配多大内存

2017-04-07 18:02 225 查看
直接上代码:

#include <stdio.h>
#include <stdlib.h>

int count=0;
void *p=NULL;

int main(int argc,char *argv[])
{
int blocksize[4]={1024*1024*1024, 1024*1024, 1024, 1};
int i,j;
for(i=0; i<4; ++i)
{
for(j=1; ; ++j)
{
if( NULL==(p=malloc(count+blocksize[i])) )
{	printf("%d\n",j);break; }
count+=blocksize[i];
free(p);
}
}
printf("mallocmaxmemory:%d\n",count);
return 0;
}
CentOS7(2G内存)中运行结果:



差一个字节不到2G。(运行程序之后直接就出结果,很快)

在Windows7(8G内存)中也运行了一遍:



大概是1.5G。(运行程序之后,循环很慢,大概2、3分钟才出结果)

其实不同操作系统下的malloc、free实现不会有太大差别,执行速度也不会有太大差别,可能是windows7有什么内存管理策略导致同一段代码执行速度缓慢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐