最近做的一个系统内存少的可怜,只有512KB,用起来十分紧张,就写了个查看当前可用内存的函数,最大可查找512KB,打印出所有可用的内存块,
最小单位为512B.
#define MAX_MEM 512 * 1024 //系统内存大小
#define MAX_MEM_PEICES_NUM 200 //可记录的最多的内存碎片个数
#define MIN_MEM 512 //查找的最小内存碎片大小
void ct_CalcFreeMem(void)
{
int curFreeSize = MAX_MEM;
int * pt = NULL;
//Calc freee mem
int * ptArray[MAX_MEM_PEICES_NUM];
int i = 0, j = 0;
int totalMem = 0;
printf("====================\n");
while(1) {
pt = (int *)malloc(curFreeSize);
if (pt != NULL) {
printf("Free mem slice %d = %d B\n", i, curFreeSize);
ptArray[i] = pt;
pt = NULL;
i++;
totalMem += curFreeSize;
}
curFreeSize -= MIN_MEM;
if (curFreeSize < MIN_MEM || i>= MAX_MEM_PIECES_NUM) {
break;
}
}
for (j=0; j<i; j++) {
if (ptArray[j]) {
free(ptArray[j]);
ptArray[j] = NULL;
}
}
printf("Total free mem = %d B\n", totalMem);
printf("====================\n");
}
在你的系统上,把MAX_MEM改为系统内存大小,MAX_PIECES_NUM 和MIN_MEM 可更改为你想要的值。