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

📄 lyleaks.h

📁 elinks下lynx是最重要的二个文本浏览器, 在linux下非常实用, lynx比elinks早的多, 目前好像停止开发, 这是lynx源代码
💻 H
字号:
#ifndef __LYLEAKS_H/* *	Avoid include redundancy *	Include only if finding memory leaks. */#define __LYLEAKS_H/***  Copyright (c) 1994, University of Kansas, All Rights Reserved****  Include File:	LYLeaks.h**  Purpose:		Header to convert requests for allocation to Lynx**			custom functions to track memory leaks.**  Remarks/Portability/Dependencies/Restrictions:**	For the stdlib.h allocation functions to be overriden by the**		Lynx memory tracking functions all modules allocating,**		freeing, or resizing memory must have LY_FIND_LEAKS**		defined before including this file.**	This header file should be included in every source file which**		does any memory manipulation through use of the**		stdlib.h memory functions.**	For proper reporting of memory leaks, the function LYLeaks**		should be registered for execution by atexit as the**		very first executable statement in main.**	This code is slow and should not be used except in debugging**		circumstances (don't define LY_FIND_LEAKS).**	If you are using LY_FIND_LEAKS and don't want the LYLeak***		memory functions to be used in a certain file,**		define NO_MEMORY_TRACKING before including this file.**	The only safe way to call the LYLeak* functions is to use**		the below macros because they depend on the static**		string created by __FILE__ to not be dynamic in**		nature (don't free it and assume will exist at all**		times during execution).**	If you are using LY_FIND_LEAKS and LY_FIND_LEAKS_EXTENDED and**		want only normal memory tracking (not extended for**		HTSprintf/HTSprintf0) to be used in a certain file,**		define NO_EXTENDED_MEMORY_TRACKING and don't define**		NO_MEMORY_TRACKING before including this file.**  Revision History:**	05-26-94	created for Lynx 2-3-1, Garrett Arch Blythe**	10-30-97	modified to handle StrAllocCopy() and**			StrAllocCat(). - KW & FM**	1999-10-17	modified to handle HTSprintf0 and HTSprintf(),**			and to provide mark_malloced, if**			LY_FIND_LEAKS_EXTENDED is defined. - kw*//* Undefine this to get no improved HTSprintf0/HTSprintf tracking: */#define LY_FIND_LEAKS_EXTENDED/***  Required includes*/#ifndef HTUTILS_H#include <HTUtils.h>#endif/***	Constant defines*/#define MAX_CONTENT_LENGTH 50#ifdef VMS#define LEAKAGE_SINK "sys$login:Lynx.leaks"#else#define LEAKAGE_SINK "Lynx.leaks"#endif /* VMS *//***	Data structures*/typedef struct SourceLocation_tag	{	/*	 *	The file name and line number of where an event took place.	 */	CONST char *cp_FileName;	short ssi_LineNumber;}SourceLocation;typedef struct AllocationList_tag	{	/*	 *	A singly linked list.	 */	struct AllocationList_tag *ALp_Next;	/*	 *	Count the number of mallocs.	 */	long st_Sequence;	/*	 *	The memory pointer allocated.	 *	If set to NULL, then an invalid request was made.	 *	The invalid pointer also.	 */	void *vp_Alloced;	void *vp_BadRequest;	/*	 *	The size in bytes of the allocated memory.	 */	size_t st_Bytes;	/*	 *	The source location of specific event (calloc, malloc, free).	 *	realloc kept separate since will track last realloc on pointer.	 */	SourceLocation SL_memory;	SourceLocation SL_realloc;} AllocationList;/***  Global variable declarations*//***  Macros*/#if defined(LY_FIND_LEAKS) && !defined(NO_MEMORY_TRACKING)/***	Only use these macros if we are to track memory allocations.**	The reason for using a macro instead of a define is that we want**		to track where the initial allocation took place or where**		the last reallocation took place.**	Track where the allocation took place by the __FILE__ and __LINE__**		defines which are automatic to the compiler.*/#ifdef malloc#undef malloc#endif /* malloc */#define malloc(st_bytes) LYLeakMalloc(st_bytes, __FILE__, __LINE__)#ifdef calloc#undef calloc#endif /* calloc */#define calloc(st_number, st_bytes) LYLeakCalloc(st_number, st_bytes, \	__FILE__, __LINE__)#ifdef realloc#undef realloc#endif /* realloc */#define realloc(vp_alloced, st_newbytes) LYLeakRealloc(vp_alloced, \	st_newbytes, __FILE__, __LINE__)#ifdef free#undef free#endif /* free */#define free(vp_alloced) LYLeakFree(vp_alloced, __FILE__, __LINE__)/***  Added the following two defines to track Lynx's frequent use**  of those macros. - KW 1997-10-12*/#ifdef StrAllocCopy#undef StrAllocCopy#endif /* StrAllocCopy */#define StrAllocCopy(dest, src) LYLeakSACopy(&(dest), src, __FILE__, __LINE__)#ifdef StrAllocCat#undef StrAllocCat#endif /* StrAllocCat */#define StrAllocCat(dest, src)  LYLeakSACat(&(dest), src, __FILE__, __LINE__)#define mark_malloced(a,size) LYLeak_mark_malloced(a,size, __FILE__, __LINE__)#if defined(LY_FIND_LEAKS_EXTENDED) && !defined(NO_EXTENDED_MEMORY_TRACKING)#ifdef HTSprintf0#undef HTSprintf0#endif /* HTSprintf0 */#define HTSprintf0 (Get_htsprintf0_fn(__FILE__,__LINE__))#ifdef HTSprintf#undef HTSprintf#endif /* HTSprintf */#define HTSprintf (Get_htsprintf_fn(__FILE__,__LINE__))#endif /* LY_FIND_LEAKS_EXTENDED and not NO_EXTENDED_MEMORY_TRACKING */#else /* LY_FIND_LEAKS && !NO_MEMORY_TRACKING */#define mark_malloced(a,size)	/* no-op */#define LYLeakSequence() (-1)#endif /* LY_FIND_LEAKS && !NO_MEMORY_TRACKING */#if defined(LY_FIND_LEAKS)#define PUBLIC_IF_FIND_LEAKS PUBLIC#else#define PUBLIC_IF_FIND_LEAKS PRIVATE#endif/***	Function declarations**	See the appropriate source file for usage.*/#ifndef LYLeakSequence extern long LYLeakSequence NOPARAMS;#endifextern void LYLeaks NOPARAMS;#ifdef LY_FIND_LEAKS_EXTENDEDextern AllocationList *LYLeak_mark_malloced PARAMS((	void *		vp_alloced,	size_t		st_bytes,	CONST char *	cp_File,	CONST short	ssi_Line));#endif /* LY_FIND_LEAKS_EXTENDED */extern void *LYLeakMalloc PARAMS((	size_t		st_bytes,	CONST char *	cp_File,	CONST short	ssi_Line));extern void *LYLeakCalloc PARAMS((	size_t		st_number,	size_t		st_bytes,	CONST char *	cp_File,	CONST short	ssi_Line));extern void *LYLeakRealloc PARAMS((	void *		vp_alloced,	size_t		st_newbytes,	CONST char *	cp_File,	CONST short	ssi_Line));extern void LYLeakFree PARAMS((	void *		vp_alloced,	CONST char *	cp_File,	CONST short	ssi_Line));extern char * LYLeakSACopy PARAMS((	char **		dest,	CONST char *	src,	CONST char *	cp_File,	CONST short	ssi_Line));extern char * LYLeakSACat PARAMS((	char **		dest,	CONST char *	src,	CONST char *	cp_File,	CONST short	ssi_Line));#ifdef LY_FIND_LEAKS_EXTENDED/* Trick to get tracking of var arg functions without relying   on var arg preprocessor macros: */typedef char * HTSprintflike PARAMS((char **, CONST char *, ...));extern HTSprintflike *Get_htsprintf_fn PARAMS((			   CONST char *	cp_File,			   CONST short	ssi_Line));extern HTSprintflike *Get_htsprintf0_fn PARAMS((			   CONST char *	cp_File,			   CONST short	ssi_Line));#endif /* LY_FIND_LEAKS_EXTENDED */#endif /* __LYLEAKS_H */

⌨️ 快捷键说明

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