goback add

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

2799 点击·0 回帖
灯火互联
楼主

最近做的一个系统内存少的可怜,只有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