xmalloc et al


[Home] Home > Programming > Portability >
xmalloc et al
#include <stdlib.h>
#include <unistd.h>
#include <strings.h>

#include <sys/types.h>

inline
void *
xmalloc(size_t n)
{
  register void *ptr = NULL;

  if ((ptr = malloc(n)) == NULL) {
    perror("xmalloc");
    exit(EXIT_FAILURE);
  }
  bzero(ptr, n);

  return ptr;
}

inline
void *
xrealloc(void *ptr, size_t n)
{
  if ((ptr = realloc(ptr, n)) == NULL) {
    perror("xrealloc");
    exit(EXIT_FAILURE);
  }
  bzero(ptr, n);

  return ptr;
}

inline
void *
xcalloc(size_t nelem, size_t elsize)
{
  register void *newmem = NULL;

  newmem = calloc(nelem ? nelem : 1, elsize ? elsize : 1);
  if (newmem == NULL) {
    perror("xcalloc");
    exit(EXIT_FAILURE);
  }

  return newmem;
}

inline
void
xfree(void *ptr)
{
  if (ptr == NULL) {
    return;
  }

  free(ptr);
  ptr = NULL;
}

Copyright © 2010-2024 Paul Ward.
License Information