xmalloc.c
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:2k
源码类别:

信息检索与抽取

开发平台:

Unix_Linux

  1. #include <misc.h>
  2. // weak attribute only for ELF targets not Mach-O.
  3. #ifdef __MACH__
  4. void *GC_malloc_atomic_uncollectable (size_t);
  5. void *GC_malloc_uncollectable (size_t);
  6. void *GC_realloc (void *buf, size_t size);
  7. void GC_free (void *buf);
  8. #else
  9. void *GC_malloc_atomic_uncollectable (size_t); __attribute__ ((weak));
  10. void *GC_malloc_uncollectable (size_t); __attribute__ ((weak));
  11. void *GC_realloc (void *buf, size_t size); __attribute__ ((weak));
  12. void GC_free (void *buf); __attribute__ ((weak));
  13. #endif
  14. void *
  15. GC_malloc_uncollectable (size_t size)
  16. {
  17.   return malloc (size);
  18. }
  19. void *
  20. GC_malloc_atomic_uncollectable (size_t size)
  21. {
  22.   return malloc (size);
  23. }
  24. void *
  25. GC_realloc (void *ptr, size_t size)
  26. {
  27.   return realloc (ptr, size);
  28. }
  29. void
  30. GC_free (void *ptr)
  31. {
  32.   free (ptr);
  33. }
  34. #if 0
  35. void *
  36. xmalloc (size_t size)
  37. {
  38.   void *ptr;
  39.   ptr = GC_malloc_uncollectable (size);
  40.   if (ptr == NULL)
  41.     abort ();
  42.   return ptr;
  43. }
  44. void *
  45. xmalloc_atomic (size_t size)
  46. {
  47.   void *ptr;
  48.   ptr = GC_malloc_atomic_uncollectable (size);
  49.   if (ptr == NULL) 
  50.     abort ();
  51.   return ptr;
  52. }
  53. void *
  54. xcalloc (size_t nmemb, size_t size)
  55. {
  56.   void *ptr;
  57.   ptr = GC_malloc_uncollectable (nmemb * size);
  58.   if (ptr == NULL)
  59.     abort ();
  60.   memset (ptr, 0, nmemb * size);
  61.   return ptr;
  62. }
  63. void *
  64. xrealloc (void *buf, size_t size)
  65. {
  66.   void *ptr;
  67.   ptr = GC_realloc (buf, size);
  68.   if (ptr == NULL)
  69.     abort ();
  70.   return ptr;
  71. }
  72. void
  73. xfree (void *buf)
  74. {
  75. #ifndef DISABLE_FREE
  76.     GC_free (buf);
  77. #endif
  78. }
  79. #else
  80. void *
  81. xmalloc (size_t size)
  82. {
  83.   void *ptr;
  84.   ptr = malloc (size);
  85.   if (ptr == NULL) 
  86.     abort ();
  87.   return ptr;
  88. }
  89. void *
  90. xmalloc_atomic (size_t size)
  91. {
  92.   void *ptr;
  93.   ptr = malloc (size);
  94.   if (ptr == NULL) 
  95.     abort ();
  96.   return ptr;
  97. }
  98. void *
  99. xcalloc (size_t nmemb, size_t size)
  100. {
  101.   void *ptr;
  102.   ptr = calloc (nmemb, size);
  103.   if (ptr == NULL)
  104.     abort ();
  105.   return ptr;
  106. }
  107. void *
  108. xrealloc (void *buf, size_t size)
  109. {
  110.   void *ptr;
  111.   ptr = realloc (buf, size);
  112.   if (ptr == NULL)
  113.     abort ();
  114.   return ptr;
  115. }
  116. void
  117. xfree (void *buf)
  118. {
  119. #ifndef DISABLE_FREE
  120.     free (buf);
  121. #endif
  122. }
  123. #endif