home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_300
/
319_01
/
mem.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-06-18
|
1KB
|
81 lines
/*
CPP V5 -- Memory management routines.
source: mem.c
started: September 20, 1985
version: October 15, 1987; March 24, 1988
Written by Edward K. Ream.
This software is in the public domain.
See the read.me file for disclaimer and other information.
*/
#include "cpp.h"
#ifdef MICRO_SOFT
#include <malloc.h>
#else
#include <alloc.h>
#endif
/* Define local data structures. */
static long m_tot = 0; /* Total number of bytes allocated. */
/*
Allocate n bytes using calloc(), assumed to get memory from system
The returned memory IS zeroed.
*/
void *
m_alloc(n)
int n;
{
register char *p;
TRACEP("m_alloc", printf("(%d): ", n));
/* Align the request. */
while (n & (sizeof(short int)-1) ) {
n++;
}
p = calloc(1, (unsigned) n);
if (p == NULL) {
printf("sorry, out of memory\n");
m_stat();
exit(BAD_EXIT);
}
/* Update statistics. */
m_tot += (long) n;
TRACEN("m_alloc", printf("returns %p\n", p));
return p;
}
/*
Free memory allocated by m_alloc().
*/
void
m_free(p)
void *p;
{
TRACEP("m_free", printf("(%p)\n", p));
if (p == NULL) {
syserr("m_free: trying to free a NULL pointer.");
}
else {
free(p);
}
}
/*
Print statistics about memory manager.
*/
void
m_stat()
{
TRACEP("m_stat", printf("m_tot: %ld (0x%lx)\n", m_tot, m_tot));
}