Variable dimensioning in fortran (now in C)

Stephen J. Friedl friedl at vsi.UUCP
Mon Jun 27 16:53:05 AEST 1988


In article <8168 at brl-smoke.ARPA>, gwyn at brl-smoke.ARPA (Doug Gwyn ) writes:
> >What makes you think calloc() is VAX-specific?
> 
> It's true that calloc() exists universally, but its function is to allocate
> memory and initialize it with 0 BYTE data.  That does not in general
> properly initialize all data types (particularly floating-point and
> pointer types), thus the necessity of malloc() followed by an explicit
> initialization loop.  On a VAX this use of calloc() typically happens to
> work, by accident.

This has been my approach to a Q&D allocator for some
kind of arbitrary data type:

/*
 * objalloc()
 *
 *	Return one initialized item.
 */

typedef struct object	OBJ;

OBJ *
objalloc()
{
static OBJ dummy;	/* guaranteed to be "the right" zeros	*/
OBJ	   *p;

	p = (OBJ *)Malloc(sizeof(*p));	/* does error checking internally */

	*p = dummy;			/* do a *real* initialization	  */

	return(p);
}


-- 
Steve Friedl     V-Systems, Inc. (714) 545-6442     3B2-kind-of-guy
friedl at vsi.com     {backbones}!vsi.com!friedl    attmail!vsi!friedl

Nancy Reagan on the Free Software Foundation : "Just say GNU"



More information about the Comp.lang.c mailing list