date: 2023-12-22 09:44:42

tags: malloc memory check

  • 代码
#include <iostream>
#include <malloc.h>
using namespace std;

int main()
{
  // 调用mallinfo()函数获取堆内存的统计信息
  struct mallinfo mi;
  int *a[10];
  size_t old=0;
  size_t delta=0;
  for(int i=0;i<10;i++)
  {
    a[i]=0;
    a[i] = (int*)malloc(40000000);
    mi = mallinfo();
    // 计算堆内存的已使用大小
    size_t heap_used = mi.arena + mi.hblkhd;
    // 打印堆内存的统计信息
    delta = heap_used - old;
    cout << "heap_used: " << heap_used << " bytes| delta: " << delta << endl;
    cout << mi.arena<<" "<<mi.ordblks<<" "<<mi.smblks<<" "<<mi.hblks<<endl;
    old = heap_used;
  }
  return 0;
}
  • 输出结果
heap_used: 40214528 bytes| delta: 40214528
212992 1 0 1
heap_used: 80216064 bytes| delta: 40001536
212992 1 0 2
heap_used: 120217600 bytes| delta: 40001536
212992 1 0 3
heap_used: 160219136 bytes| delta: 40001536
212992 1 0 4
heap_used: 200220672 bytes| delta: 40001536
212992 1 0 5
heap_used: 240222208 bytes| delta: 40001536
212992 1 0 6
heap_used: 280223744 bytes| delta: 40001536
212992 1 0 7
heap_used: 320225280 bytes| delta: 40001536
212992 1 0 8
heap_used: 360226816 bytes| delta: 40001536
212992 1 0 9
heap_used: 400228352 bytes| delta: 40001536
212992 1 0 10