Linux c/c++编程--(内存1)快速耗尽内存的memtest 程序

#include <stdio.h>
#include <memory.h>
#include <string.h>

int main(){
  
  int size = 1024 * 1024;
  int i = 0;
  while(true){
    void * block = malloc(size * 20);  //这里申请内存 20 M
    sleep(1); 
    i++;   //一个计数,可用于计算总共分配的内存
    if(block){
      memset(block, 0, size * 20);
      printf("request block %p, count %d \n", block, i);
    }else{
      printf("request block failed, %d \n",i);
      sleep(20);
    }
  }

}

输出结果

request block 0xb552b008,count 1           1402000   (十六进制) = 1024 * 1024 * 20 (十进制)
request block 0xb4129008,count 2 
request block 0xb2d28008,count 3 
request block 0xb1927008,count 4 
request block 0xb0526008,count 5 
request block 0xaf125008,count 6 
request block 0xadd24008,count 7 
request block 0xac923008,count 8 
request block 0xab522008,count 9 
request block 0xaa121008,count 10 
request block 0xa8d20008,count 11 
request block 0xa791f008,count 12 
request block 0xa651e008,count 13 
request block 0xa511d008,count 14 

。。。

request block 0x33e9008,count 136 

request block 0x1fe8008,count 137

request block 0x250008,count 138 

request block 0xb6935008,count 139 

request block 0xb7d36008,count 140 

request block 0xbb939008,count 143 

request block 0xbcd3a008,count 144 

通过结果,可以看出,大约可以申请到的内存为 145 * 20 M= 2900 M 不到3G 内存。

如果要消耗实际的物理内存,一定需要使用分配的物理地址,例如memset ,将其清零。

malloc 只是申请到了内存,如果你不去使用的话,是不会占用物理内存的。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值