ialloc.c

来自「一个C源代码分析器」· C语言 代码 · 共 104 行

C
104
字号
#ifndef lint#ifndef NOIDstatic char	elsieid[] = "@(#)ialloc.c	8.21";#endif /* !defined NOID */#endif /* !defined lint *//*LINTLIBRARY*/#include "private.h"#ifdef MAL#define NULLMAL(x)	((x) == NULL || (x) == MAL)#endif /* defined MAL */#ifndef MAL#define NULLMAL(x)	((x) == NULL)#endif /* !defined MAL */#define nonzero(n)	(((n) == 0) ? 1 : (n))char *	icalloc P((int nelem, int elsize));char *	icatalloc P((char * old, const char * new));char *	icpyalloc P((const char * string));char *	imalloc P((int n));char *	irealloc P((char * pointer, int size));void	ifree P((char * pointer));char *imalloc(n)const int	n;{#ifdef MAL	register char *	result;	result = malloc((alloc_size_t) nonzero(n));	return NULLMAL(result) ? NULL : result;#endif /* defined MAL */#ifndef MAL	return malloc((alloc_size_t) nonzero(n));#endif /* !defined MAL */}char *icalloc(nelem, elsize)int	nelem;int	elsize;{	if (nelem == 0 || elsize == 0)		nelem = elsize = 1;	return calloc((alloc_size_t) nelem, (alloc_size_t) elsize);}char *irealloc(pointer, size)char * const	pointer;const int	size;{	if (NULLMAL(pointer))		return imalloc(size);	return realloc((genericptr_t) pointer, (alloc_size_t) nonzero(size));}char *icatalloc(old, new)char * const		old;const char * const	new;{	register char *	result;	register int	oldsize, newsize;	newsize = NULLMAL(new) ? 0 : strlen(new);	if (NULLMAL(old))		oldsize = 0;	else if (newsize == 0)		return old;	else	oldsize = strlen(old);	if ((result = irealloc(old, oldsize + newsize + 1)) != NULL)		if (!NULLMAL(new))			(void) strcpy(result + oldsize, new);	return result;}char *icpyalloc(string)const char * const	string;{	return icatalloc((char *) NULL, string);}voidifree(p)char * const	p;{	if (!NULLMAL(p))		(void) free(p);}voidicfree(p)char * const	p;{	if (!NULLMAL(p))		(void) free(p);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?