c 语言堆最大长度,C中的堆大小限制

我对C程序的程序执行布局图中的堆有疑问.

我知道所有动态分配的内存都分配在动态增长的堆中.但我想知道C程序的最大堆大小是多少?

我只是附加一个示例C程序…在这里我试图分配1GB内存到字符串,甚至做memset …

#include

#include

#include

int main(int argc, char *argv[])

{

char *temp;

mybuffer=malloc(1024*1024*1024*1);

temp = memset(mybuffer,0,(1024*1024*1024*1));

if( (mybuffer == temp) && (mybuffer != NULL))

printf("%x - %x\n", mybuffer, &mybuffer[((1024*1024*1024*1)-1)]]);

else

printf("Wrong\n");

sleep(20);

free(mybuffer);

return 0;

}

如果我一次在3个实例中运行上面的程序,那么malloc应该至少在一个实例中失败[我感觉如此] ……但是malloc仍然是成功的.

如果成功,我可以知道操作系统如何处理3GB的动态分配内存.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值