您的位置:首页 > 其它

查看当前系统可用的动态内存(C)

2012-04-12 09:29 288 查看
最近做的一个系统内存少的可怜,只有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 可更改为你想要的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: