forked from lijiext/lammps
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
|
#include "stdio.h"
|
||
|
#include "stdlib.h"
|
||
|
#include "string.h"
|
||
|
#include "memory.h"
|
||
|
|
||
|
/* ----------------------------------------------------------------------
|
||
|
safe malloc
|
||
|
------------------------------------------------------------------------- */
|
||
|
|
||
|
void *Memory::smalloc(bigint nbytes, const char *name)
|
||
|
{
|
||
|
if (nbytes == 0) return NULL;
|
||
|
|
||
|
void *ptr = malloc(nbytes);
|
||
|
if (ptr == NULL) printf("Failed to allocate " BIGINT_FORMAT "bytes for array %s", nbytes,name);
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
/* ----------------------------------------------------------------------
|
||
|
safe realloc
|
||
|
------------------------------------------------------------------------- */
|
||
|
void *Memory::srealloc(void *ptr, bigint nbytes, const char *name)
|
||
|
{
|
||
|
if (nbytes == 0) {
|
||
|
destroy(ptr);
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
ptr = realloc(ptr,nbytes);
|
||
|
if (ptr == NULL) printf("Failed to reallocate " BIGINT_FORMAT "bytes for array %s", nbytes,name);
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
/* ----------------------------------------------------------------------
|
||
|
safe free
|
||
|
------------------------------------------------------------------------- */
|
||
|
|
||
|
void Memory::sfree(void *ptr)
|
||
|
{
|
||
|
if (ptr == NULL) return;
|
||
|
free(ptr);
|
||
|
}
|
||
|
|
||
|
/* ----------------------------------------------------------------------
|
||
|
erroneous usage of templated create/grow functions
|
||
|
------------------------------------------------------------------------- */
|
||
|
|
||
|
void Memory::fail(const char *name)
|
||
|
{
|
||
|
printf("Cannot create/grow a vector/array of pointers for %s",name);
|
||
|
}
|