mem.c 870 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. tmp = realloc(p, size);
  29. if(tmp != NULL){
  30. return tmp;
  31. }
  32. else{
  33. puts("realloc error");
  34. exit(1);
  35. }
  36. }
  37. void *safe_memcpy(void *p1, const void *p2, size_t size){
  38. void *tmp;
  39. tmp = memcpy(p1, p2, size);
  40. if(tmp != NULL){
  41. return tmp;
  42. }
  43. else{
  44. puts("memcpy error");
  45. exit(1);
  46. }
  47. }