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. } | |
![]() | ![]() |