灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2240回复:0

c语言查看当前系统可用的动态内存

楼主#
更多 发布于:2012-09-06 12:31

最近做的一个系统内存少的可怜,只有512KB,用起来十分紧张,就写了个查看当前可用内存的函数,最大可查找512KB,打印出所有可用的内存块,
最小单位为512B.
[cpp]
1. #define MAX_MEM   512 * 1024              //最大的可用内存
2. #define MAX_MEM_PEICES_NUM   200   //可记录的最多的内存碎片个数
3. #define MIN_MEM         512                          //查找的最小内存碎片大小
4. void ct_CalcFreeMem(void)  
5. {  
6.    int curFreeSize = MAX_MEM;  
7.    int * pt = NULL;
8.    //Calc freee mem
9.    int * ptArray[MAX_MEM_PEICES_NUM];    
10.    int i = 0,  j = 0;
11.    int totalMem = 0;
12.    printf("====================\n");
13.    while(1) {
14.       pt = (int *)malloc(curFreeSize);
15.       if (pt != NULL) {
16.          printf("Free mem slice %d = %d B\n", i, curFreeSize);
17.          ptArray = pt;
18.          pt = NULL;
19.          i++;
20.          totalMem += curFreeSize;
21.       }
22.       curFreeSize -= MIN_MEM;
23.       if (curFreeSize < MIN_MEM) {
24.          break;
25.       }
26.    }
27.  
28.  
29.    for (j=0; j<i; j++) {
30.       if (ptArray[j]) {
31.          free(ptArray[j]);
32.          ptArray[j] = NULL;
33.       }
34.    }
35.    printf("Total free mem = %d B\n", totalMem);
36.    printf("====================\n");
37. }

喜欢0 评分0
游客

返回顶部