⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mem.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* $Source: /u/mark/src/pax/RCS/mem.c,v $ * * $Revision: 1.2 $ * * mem.c - memory allocation and manipulation functions * * DESCRIPTION * *	These routines are provided for higher level handling of the UNIX *	memory allocation functions. * * AUTHOR * *     Mark H. Colburn, NAPS International (mark@jhereg.mn.org) * * * Sponsored by The USENIX Association for public distribution.  * * Copyright (c) 1989 Mark H. Colburn. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice is duplicated in all such  * forms and that any documentation, advertising materials, and other  * materials related to such distribution and use acknowledge that the  * software was developed * by Mark H. Colburn and sponsored by The  * USENIX Association.  * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log:	mem.c,v $ * Revision 1.2  89/02/12  10:04:53  mark * 1.2 release fixes *  * Revision 1.1  88/12/23  18:02:17  mark * Initial revision *  */#ifndef lintstatic char *ident = "$Id: mem.c,v 1.2 89/02/12 10:04:53 mark Exp $";static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";#endif /* ! lint *//* Headers */#include "pax.h"/* mem_get - allocate memory * * DESCRIPTION * *	Mem_get attempts to allocate a block of memory using the malloc *	function call.  In the event that the memory is not available,  *	mem_get will display an "Out of memory" message for the user *	the first time it encounters the an out of memory situation. *	Subsequent calls to mem_get may fail, but no message will be *	printed. * * PARAMETERS * *	uint len	- The amount of memory to allocate * * RETURNS * *	Normally returns the pointer to the newly allocated memory.  If *	an error occurs, NULL is returned, and an error message is *	printed. * * ERRORS * *	ENOMEM	No memory is available  */#ifdef __STDC__char *mem_get(uint len)#elsechar *mem_get(len)uint            len;		/* amount of memory to get */#endif{    char           *mem;    static short    outofmem = 0;    if ((mem = (char *)malloc(len)) == (char *)NULL && !outofmem) {	outofmem++;	warn("mem_get()", "Out of memory");    }    return (mem);}/* mem_str - duplicate a string into dynamic memory * * DESCRIPTION * *	Mem_str attempts to make a copy of string.  It allocates space for *	the string, and if the allocation was successfull, copies the old *	string into the newly allocated space. * * PARAMETERS * *	char *str 	- string to make a copy of  * * RETURNS * *	Normally returns a pointer to a new string at least as large *	as strlen(str) + 1, which contains a copy of the the data  *	passed in str, plus a null terminator.  Returns (char *)NULL  *	if enough memory to make a copy of str is not available. */#ifdef __STDC__char *mem_str(char *str)#elsechar *mem_str(str)char           *str;		/* string to make a copy of */#endif{    char           *mem;    if (mem = mem_get((uint) strlen(str) + 1)) {	strcpy(mem, str);    }    return (mem);}

⌨️ 快捷键说明

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