1
0

mem.c 951 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #undef malloc
  2. #undef calloc
  3. #undef free
  4. #undef realloc
  5. #undef memcpy
  6. void *safe_calloc(size_t size, size_t num){
  7. void *tmp;
  8. tmp = calloc(size, num);
  9. if(tmp != NULL){
  10. return tmp;
  11. }
  12. else{
  13. puts("malloc error");
  14. exit(1);
  15. }
  16. }
  17. void *safe_free(void *p){ // 安全的释放
  18. if(p == NULL){
  19. puts("free Wrong!");
  20. return p; // p已经释放了
  21. }
  22. free(p);
  23. p = NULL;
  24. return p;
  25. }
  26. void *safe_realloc(void *p, size_t size){
  27. void *tmp;
  28. if(p != NULL){
  29. tmp = realloc(p, size);
  30. }
  31. else{
  32. tmp = safe_calloc(size, 1);
  33. }
  34. if(tmp != NULL){
  35. return tmp;
  36. }
  37. else{
  38. puts("realloc error");
  39. exit(1);
  40. }
  41. }
  42. void *safe_memcpy(void *p1, const void *p2, size_t size){
  43. void *tmp;
  44. tmp = memcpy(p1, p2, size);
  45. if(tmp != NULL){
  46. return tmp;
  47. }
  48. else{
  49. puts("memcpy error");
  50. exit(1);
  51. }
  52. }