Advertisement
rfmonk

malloc_ex.c

Jul 23rd, 2014
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. //xmalloc example
  2. //
  3.    
  4. void *
  5. xmalloc (size_t size)
  6. {
  7.     void *value = malloc (size);
  8.     if (value == 0)
  9.         fatal ("virtual memory exhausted");
  10.     return value;
  11. }
  12.  
  13. // example of using malloc
  14. //
  15. char *
  16. savestring (const char *ptr, size_t len)
  17. {
  18.     char *value = (char *) xmalloc (len + 1);
  19.     value[len] = '\0';
  20.     return (char *) memcpy (value, ptr, len);
  21.  
  22.  
  23. // example freeing all the blocks in a chain
  24. //
  25. struct chain
  26. {
  27.     struct chain *next;
  28.     char *name;
  29. }
  30. void
  31. free_chain (struct chain *chain)
  32. {
  33.     while (chain != 0)
  34.     {
  35.         struct chain *next = chain->next;
  36.         free (chain->name);
  37.         free (chain);
  38.         chain = next;
  39.     }
  40. }
  41.  
  42. // xrealloc example
  43. // see www.gnu.org/libc/manual/
  44. //
  45. void *
  46. xrealloc (void *ptr, size_t size)
  47. {
  48.     void *value = realloc (ptr, size);
  49.     if (value == 0)
  50.         fatal ("Virtual memor exhausted");
  51.     return value;
  52. }
  53.  
  54. // allocating cleared space
  55. //
  56. void *
  57. calloc (size_t count, size_t, eltsiz)
  58. {
  59.     size_t size = count * eltsize;
  60.     void *value = malloc (size);
  61.     if (value != 0)
  62.         memset (value, 0, size);
  63.     return value;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement