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

📄 dump.c

📁 对内存的分配、释放和使用进行检查
💻 C
字号:
/* * (c) Copyright 1990 Conor P. Cahill (uunet!virtech!cpcahil).   * You may copy, distribute, and use this software as long as this * copyright statement is not removed. */#include <stdio.h>#include "malloc.h"#include "tostring.h"/* * Function:	malloc_dump() * * Purpose:	to dump a printed copy of the malloc chain and *		associated data elements * * Arguments:	fd	- file descriptor to write data to * * Returns:	nothing of any use * * Narrative:	Just print out all the junk * * Notes:	This function is implemented using low level calls because * 		of the likelyhood that the malloc tree is damaged when it *		is called.  (Lots of things in the c library use malloc and *		we don't want to get into a catch-22). * */#ifndef lintstaticchar rcs_hdr[] = "$Id: dump.c,v 1.4 90/05/11 00:13:08 cpcahil Exp $";#endif#define ERRSTR	"I/O Error on malloc dump file descriptor\n"#define WRITEOUT(fd,str,len)	if( write(fd,str,(unsigned)len) != len ) \				{ \					(void) write(2,ERRSTR,\						     (unsigned)strlen(ERRSTR));\					exit(120); \				}malloc_dump(fd)	int		fd;{	char			  buffer[512];	void			  exit();	int			  i;	extern char		* malloc_data_end;	extern char		* malloc_data_start;	extern struct mlist 	* malloc_end;	extern struct mlist	  malloc_start;	struct mlist 		* ptr;	WRITEOUT(fd,"MALLOC CHAIN:\n",14);	WRITEOUT(fd,"-------------------- START ----------------\n",44);	for(i=0; i < 80; i++)	{		buffer[i] = ' ';	}	for(ptr = &malloc_start; ptr; ptr = ptr->next)	{		(void) tostring(buffer,	   (int)ptr,	     8,	B_HEX,	'0');		(void) tostring(buffer+9,  (int)ptr->next,   8,	B_HEX,	'0');		(void) tostring(buffer+18, (int)ptr->prev,   8,	B_HEX,	'0');		(void) tostring(buffer+27, (int)ptr->flag,  10,	B_HEX,	'0');		(void) tostring(buffer+38, (int)ptr->s.size, 8,	B_DEC,	' ');		(void) tostring(buffer+47, (int)ptr->s.size, 8,	B_HEX,	'0');		(void) tostring(buffer+57, (int)ptr->data,   8,	B_HEX,	'0');		buffer[46] = '(';		buffer[55] = ')';		buffer[65] = '\n';		WRITEOUT(fd,buffer,66);	}	WRITEOUT(fd,"-------------------- DONE -----------------\n",44);	WRITEOUT(fd,"Malloc start:      ",19);	(void) tostring(buffer, (int) &malloc_start, 8, B_HEX, '0');	buffer[8] = '\n';	WRITEOUT(fd,buffer,9);	WRITEOUT(fd,"Malloc end:        ", 19);	(void) tostring(buffer, (int) malloc_end, 8, B_HEX, '0');	buffer[8] = '\n';	WRITEOUT(fd,buffer,9);	WRITEOUT(fd,"Malloc data start: ", 19);	(void) tostring(buffer, (int) malloc_data_start, 8, B_HEX, '0');	buffer[8] = '\n';	WRITEOUT(fd,buffer,9);	WRITEOUT(fd,"Malloc data end:   ", 19);	(void) tostring(buffer, (int) malloc_data_end, 8, B_HEX, '0');	buffer[8] = '\n';	WRITEOUT(fd,buffer,9);	} /* malloc_dump(... *//* * $Log:	dump.c,v $ * Revision 1.4  90/05/11  00:13:08  cpcahil * added copyright statment *  * Revision 1.3  90/02/24  21:50:07  cpcahil * lots of lint fixes *  * Revision 1.2  90/02/24  17:27:48  cpcahil * changed $header to $Id to remove full path from rcs id string *  * Revision 1.1  90/02/22  23:17:43  cpcahil * Initial revision *  */

⌨️ 快捷键说明

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