最近做的一個系統內存少的可憐,只有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[i] = 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. }
摘自 herbert的知識庫