This is mmalloc.c in view mode; [Download] [Up]
/*
* FILE: mmalloc.c
* BY: Christopher Lee Fraley (cf0v@spice.cs.cmu.edu)
* DESC: Debugging malloc() & free()
*
* 1.0 (27-APR-89) - created. (cf0v)
*/
#include <stdio.h>
char *malloc();
#define TRUE 1
#define FALSE 0
#define MAX 1000
typedef struct _stuff
{
char *ptr;
char used;
} PtrType, *PtrPtr;
PtrType Ptrs[MAX];
int Initd = FALSE;
char *mmalloc(size)
unsigned int size;
{
char *temp;
int i;
if (!Initd)
for (Initd=TRUE, i=0; i<MAX; i++)
Ptrs[i].used = FALSE;
temp = malloc(size);
fprintf(stderr, "mmalloc(): temp=%x\t", temp);
for (i=0; i<MAX; i++)
{
if (!Ptrs[i].used)
{
Ptrs[i].ptr = temp;
fprintf(stderr, "Ptrs[%d].ptr=%x\n", i, Ptrs[i].ptr);
Ptrs[i].used = TRUE;
return (temp);
}
}
fprintf(stderr, "Could not save mmalloc pointer:%x", temp);
return (temp);
}
void mfree(ptr)
char *ptr;
{
int i;
for (i=0; i<MAX; i++)
{
if (Ptrs[i].ptr == ptr)
{
fprintf(stderr, "mfree(): ptr=%x\n", ptr);
free(ptr);
Ptrs[i].used = FALSE;
return;
}
}
fprintf (stderr, "Illegal mfree(%x)\n", ptr);
for (i=0; i<MAX; i++); /* delay */
i = *(int *)0x0; /* create Segmentation Fault */
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.