mem.h 837 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * 文件名: mem.h
  3. * 目标: 内存管理工具的头文件
  4. */
  5. #ifndef MEM__H
  6. #define MEM__H
  7. #include "stdlib.h"
  8. // 开关
  9. #define BUILD_VTMEM 1
  10. // 默认情况
  11. #define safeCalloc(n, size) (calloc((n), (size)))
  12. #define safeFree(p) ((((p)!=NULL) ? free(p) : NULL), (p)=NULL)
  13. #define print_memInfo() NULL
  14. #define safeFree_ free
  15. #if BUILD_VTMEM
  16. #undef safeCalloc
  17. void *safeCalloc(size_t n, size_t size);
  18. #if DEBUG_VTMEM
  19. #undef safeFree
  20. #undef safeFree_
  21. #undef print_memInfo
  22. void safeFreeDebug(void *p);
  23. int print_memInfo();
  24. #define safeFree safeFreeDebug
  25. #define safeFree_ safeFreeDebug
  26. #else
  27. #undef safeFree_
  28. void safeFree_(void *p);
  29. #endif // DEBUG_VTMEM
  30. #elif DEBUG_VTMEM
  31. #error "The option \"debug afmem\" can be turned on only when the option \"build afmem\" is turned on"
  32. #endif // BUILD_VTMEM
  33. #endif // MEM__H