mem.h 660 B

1234567891011121314151617181920212223242526272829
  1. /*
  2. * 文件名: mem.h
  3. * 目标: 内存管理工具的头文件
  4. */
  5. #ifndef AFUN_MEM_H
  6. #define AFUN_MEM_H
  7. #include <stdlib.h>
  8. #include "log.h"
  9. #define free(p) ((((p)!=NULL) ? (free(p), NULL) : NULL), (p)=NULL) // free不是可选的宏
  10. #if BUILD_MEM
  11. /* 取代calloc函数 */
  12. static void *safeCalloc(size_t n, size_t size);
  13. static void *safeCalloc(size_t n, size_t size) {
  14. void *re = calloc(n, size);
  15. if (re == NULL) {
  16. writeFatalErrorLog(NULL, log_default, EXIT_FAILURE, "The calloc error.");
  17. }
  18. return re;
  19. }
  20. #define calloc_bak(n, size) (safeCalloc(n, size)) /* 备份 */
  21. #define calloc calloc_bak
  22. #endif
  23. #endif // AFUN_MEM_H