亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rmalloc.c

?? sigmadesign smp8623 gui source code ,bingo
?? C
?? 第 1 頁 / 共 3 頁
字號:
   Return:		New memory with copied string.   Parameter:		s		string to copy   			file		called from   Purpose:		Wrapper function for strdup()   ============================================================================= */char *Rstrdup(const char *s, const char *file){  size_t size;	/* needed memory */  char *ret;  if (s == NULL) {    fprintf(stderr, HEAD "Calling strdup(NULL) (in %s)\n", file);    abort();  }  size = strlen(s)+1;  /* Rmalloc() does nearly all the work */  ret = Rmalloc(size, file);  if (ret) {    /* copy string */    strcpy(ret, s);#ifdef WITH_FLAGS    Rmalloc_set_flags(ret, RM_STRING, "<by strdup>");#endif    return ret;  }  else {    fprintf(stderr,	    HEAD "WARNING: Out of memory! Returning NULL (in %s)\n", file);    return NULL;  }}/* =============================================================================   Function:		Rgetcwd		// external //   Author:		Rammi   Date:		11/13/1998   Return:		New memory with copied string depending on input (if                        buffer == NULL)   Parameter:	        buffer		buffer for write (or NULL)                        size		buffer size   			file		called from   Purpose:		Wrapper function for getcwd() which sometimes returns			memory from heap.   ============================================================================= */char *Rgetcwd(char *buffer, size_t size, const char *file){  char *ret = getcwd(buffer, size);  if (ret && !buffer) {    /* create new memory to get internals fixed */    char *newret = Rstrdup(ret, file);    free(ret);			/* free old stuff */    ret = newret;		/* this was missing before 1.14 */				/* thanks to Greg Silverman who discovered it! */  }  return ret;}/* =============================================================================   Function:		Rmalloc_test		// external //   Author:		Rammi   Date:		04/11/1995   Return:		---   Parameter:		file		called from   Purpose:		Explicitely test all blocks for integrity   ============================================================================= */void Rmalloc_test(const char *file){#if RM_TEST_DEPTH > 0  TestAll(file);#else  fprintf(stderr, HEAD __FILE__	  " not compiled with RM_TEST_DEPTH > 0, call in %s senseless.\n", file);#endif}/* =============================================================================   Function:		BlockSort		// local //   Author:		Rammi   Date:		04/15/1995   Return:		< 0		A < B   			0		A == B   			> 0		A > B   Parameter:		A, B   Purpose:		sort function for qsort   ============================================================================= */static int BlockSort(const begin **A, const begin **B){  int   ret;  /* Sort for adress of string (tricky!) */  if ((ret = (*A)->File - (*B)->File)) {    return ret;  }  /* sort for size */  return ((int)(*A)->Size - (int)(*B)->Size);}#ifdef GENERATIONS/* =============================================================================   Function:		BlockSortGenerations		// local //   Author:		Rammi   Date:		04/22/2002   Return:		< 0		A < B   			0		A == B   			> 0		A > B   Parameter:		A, B   Purpose:		sort function for qsort, using the generations counter                        for sorting, too   ============================================================================= */static int BlockSortGenerations(const begin **A, const begin **B){  int   ret = BlockSort(A, B);  if (ret) {    return ret;  }  /* sort for generation */  return (*A)->Generation - (*B)->Generation;}#endif/* =============================================================================   Function:		Rmalloc_stat		// extern //   Author:		Rammi   Date:		04/15/1995   Return:		---   Parameter:		file		caled from   Purpose:		Show statistic   ============================================================================= */void Rmalloc_stat(const char *file){#if RM_TEST_DEPTH > 0	TestAll(file);#define STAT_HEAD "<MALLOC_STATS>\t"	fprintf(stderr,STAT_HEAD "============ STATISTICS (%s) =============\n", file);	if (!Global.BlockCount) {		fprintf(stderr, STAT_HEAD "Nothing allocated.\n");	}	else {		const begin	**BlockVec;    if ((BlockVec = (const begin **)malloc(Global.BlockCount*sizeof(begin *))) == NULL) {    	fprintf(stderr, STAT_HEAD "Couldn't allocate enough memory for statistics. Going on...\n");    }    else {    	unsigned		 i = 0;    	unsigned		 j;    	begin		*B;    	unsigned		 count;    	size_t		 Mem = 0;    	unsigned         	 nrBlocks;#ifdef WITH_FLAGS    	size_t      	 StaticMem = 0;#endif#ifdef GENERATIONS    	unsigned		 gen;#endif      /* add all blocks to vector */    	for (j = 0;   j < HASHSIZE;   j++) {    		for (B = Chain[j].Next;   B != &Chain[j];   B = B->Next) {#ifdef WITH_FLAGS    			if (B->Flags & RM_STATIC) {    				StaticMem += B->Size;    			}    			else {    				BlockVec[i++] = B;    			}#else	  BlockVec[i++] = B;#endif    		}    	}#ifdef WITH_FLAGS    	assert(i <= Global.BlockCount);#else      assert(i == Global.BlockCount);#endif      	nrBlocks = i;      	/* --- sort --- */#ifdef GENERATIONS      	qsort(BlockVec, nrBlocks, sizeof(begin *), (int (*)(const void *, const void *))BlockSortGenerations);#else      qsort(BlockVec, nrBlocks,	    sizeof(begin *),	    (int (*)(const void *, const void *))BlockSort);#endif      	for (i = 0;   i < nrBlocks;   i = j) {      		count = 1;      		for (j = i+1;   j < nrBlocks;   j++) {      			if (BlockSort(BlockVec+i, BlockVec+j) != 0) {      				break;      			}      			/* are equal */      			count++;      		}#ifdef GENERATIONS      		fprintf(stderr,STAT_HEAD "%6d x %8u Bytes in %s, generations:",count, (unsigned) BlockVec[i]->Size, BlockVec[i]->File);      		for (gen = 0;   gen < count;   gen++) {      			if (gen == MAX_STAT_GENERATIONS) {      				fprintf(stderr, " ...");      				break;      			}      			fprintf(stderr, " %d", BlockVec[gen+i]->Generation);      		}      		fprintf(stderr, "\n");#else      		fprintf(stderr, STAT_HEAD "%6d x %8u Bytes in %s\n", count, (unsigned) BlockVec[i]->Size, BlockVec[i]->File);#endif      		Mem += count*BlockVec[i]->Size;      }      	/* and give free */      	free(BlockVec);#ifdef WITH_FLAGS      	fprintf(stderr, STAT_HEAD "*Variable*\t%12u Bytes\n", (unsigned) Mem);      	fprintf(stderr, STAT_HEAD "*Static*  \t%12u Bytes\n", (unsigned) StaticMem);      	fprintf(stderr, STAT_HEAD "*Total*   \t%12u Bytes\n", (unsigned) (Mem+StaticMem));#else      	fprintf(stderr, STAT_HEAD "*Total*\t%u Bytes\n", (unsigned) Mem);#endif    	}	}	fprintf(stderr, STAT_HEAD "============ END OF STATISTICS =============\n");#else	fprintf(stderr, HEAD __FILE__ " not compiled with RM_TEST_DEPTH > 0, call in %s senseless.\n", file);#endif}void start_leak(void);void end_leak(void* file);const begin	**BlockVec;unsigned befornr;void start_leak(){	TestAll("free all");#define STAT_HEAD "<MALLOC_STATS>\t"	if (!Global.BlockCount) {		fprintf(stderr, STAT_HEAD "Nothing allocated.\n");	}	else {		if ((BlockVec = (const begin **)malloc(Global.BlockCount*sizeof(begin *))) == NULL) {			fprintf(stderr, STAT_HEAD "Couldn't allocate enough memory for statistics. Going on...\n");		}		else {			unsigned i = 0;			unsigned		 j;			begin		*B;			/* add all blocks to vector */			for (j = 0;   j < HASHSIZE;   j++) {				for (B = Chain[j].Next;   B != &Chain[j];   B = B->Next) {					BlockVec[i++] = B;				}			}			qsort(BlockVec, i, sizeof(begin *), (int (*)(const void *, const void *))BlockSortGenerations);			befornr= i;		}	}}void end_leak(void* file){	TestAll("free all");#define STAT_HEAD "<MALLOC_STATS>\t"	fprintf(stderr,STAT_HEAD "============ STATISTICS (%s) =============\n", "free all");	if (!Global.BlockCount) {		fprintf(stderr, STAT_HEAD "Nothing allocated.\n");	}	else {		begin	**BlockVec1;    if ((BlockVec1 = (begin **)malloc(Global.BlockCount*sizeof(begin *))) == NULL) {    	fprintf(stderr, STAT_HEAD "Couldn't allocate enough memory for statistics. Going on...\n");    }    else {    	unsigned		 i = 0;    	unsigned		 j;    	unsigned		count;    	begin		*B;    	unsigned         	 nrBlocks;    	size_t			mem = 0;      /* add all blocks to vector */    	for (j = 0;   j < HASHSIZE;   j++) {    		for (B = Chain[j].Next;   B != &Chain[j];   B = B->Next) {    			BlockVec1[i++] = B;    		}    	}    	assert(i <= Global.BlockCount);      	nrBlocks = i;      	/* --- sort --- */      	qsort(BlockVec1, nrBlocks, sizeof(begin *), (int (*)(const void *, const void *))BlockSortGenerations);      	for (i = 0;   i < nrBlocks;   i ++)      	{      		count = 0;      		for(j = 0 ; j < befornr; j++)      		{      			if((begin *)(((char *)BlockVec1[i])) == (begin *)(((char *)BlockVec[j])))      			{      			 {      			//		printf("%s %s\n",(char*)file, BlockVec1[i]->File);}      			//	(begin *)(((char *)BlockVec1[i])) = NULL;      				count = 1;      				break;      				}      			}      		}      		if(!count)      		{      			if(strstr(BlockVec1[i]->File, (char*)file) != 0) {      			mem += BlockVec1[i]->Size;      			fprintf(stderr,STAT_HEAD "%6d x %8u Bytes in %s\n",      						count, (unsigned) BlockVec1[i]->Size, BlockVec1[i]->File);      			DelBlk((begin *)(((char *)BlockVec1[i])),"free all");      			free(((char *)BlockVec1[i]));      		//	(begin *)(((char *)BlockVec1[i])) = NULL;      			}      		}      //		fprintf(stderr,STAT_HEAD "after %p\n", (begin *)(((char *)BlockVec1[i])));      //		DelBlk((begin *)(((char *)BlockVec1[i])),"free all");      //		free(((char *)BlockVec1[i]));      	}      	fprintf(stderr, STAT_HEAD "memory fried: %lu\n", mem);      	/* and give free */      	free(BlockVec);      	free(BlockVec1);    }	}	fprintf(stderr, STAT_HEAD "============ END OF STATISTICS =============\n");}void freeallall(){#if RM_TEST_DEPTH > 0	TestAll("free all");#define STAT_HEAD "<MALLOC_STATS>\t"	fprintf(stderr,STAT_HEAD "============ STATISTICS (%s) =============\n", "free all");	if (!Global.BlockCount) {		fprintf(stderr, STAT_HEAD "Nothing allocated.\n");	}	else {		begin	**BlockVec;    if ((BlockVec = (begin **)malloc(Global.BlockCount*sizeof(begin *))) == NULL) {    	fprintf(stderr, STAT_HEAD "Couldn't allocate enough memory for statistics. Going on...\n");    }    else {    	unsigned		 i = 0;    	unsigned		 j;    	begin		*B;    	unsigned		 count;    	size_t		 Mem = 0;    	unsigned         	 nrBlocks;#ifdef WITH_FLAGS    	size_t      	 StaticMem = 0;#endif#ifdef GENERATIONS    	unsigned		 gen;#endif      /* add all blocks to vector */    	for (j = 0;   j < HASHSIZE;   j++) {    		for (B = Chain[j].Next;   B != &Chain[j];   B = B->Next) {#ifdef WITH_FLAGS    			if (B->Flags & RM_STATIC) {    				StaticMem += B->Size;    			}    			else {    				BlockVec[i++] = B;    			}#else	  BlockVec[i++] = B;#endif    		}    	}#ifdef WITH_FLAGS    	assert(i <= Global.BlockCount);#else      assert(i == Global.BlockCount);#endif      	nrBlocks = i;      	fprintf(stderr,STAT_HEAD "non freed blocks %d\n" , nrBlocks);      	/* --- sort --- */#ifdef GENERATIONS      	qsort(BlockVec, nrBlocks, sizeof(begin *), (int (*)(const void *, const void *))BlockSortGenerations);#else      qsort(BlockVec, nrBlocks,	    sizeof(begin *),	    (int (*)(const void *, const void *))BlockSort);#endif      	for (i = 0;   i < nrBlocks;   i = j) {      		count = 1;      		for (j = i+1;   j < nrBlocks;   j++) {      			if (BlockSort((const begin **)BlockVec+i, (const begin **)BlockVec+j) != 0) {      				break;      			}      			/* are equal */      			count++;      		}#ifdef GENERATIONS      		fprintf(stderr,STAT_HEAD "%6d x %8u Bytes in %s, generations:",count, (unsigned) BlockVec[i]->Size, BlockVec[i]->File);      		for (gen = 0;   gen < count;   gen++) {      			if (gen == MAX_STAT_GENERATIONS) {      				fprintf(stderr, " ...");      				break;      			}      			fprintf(stderr, " %d", BlockVec[gen+i]->Generation);      		}      		fprintf(stderr, "\n");#else      		fprintf(stderr, STAT_HEAD "%6d x %8u Bytes in %s\n", count, (unsigned) BlockVec[i]->Size, BlockVec[i]->File);#endif      		Mem += count*BlockVec[i]->Size;      }      	for (i = 0;   i < nrBlocks;   i ++)      	{      		DelBlk((begin *)(((char *)BlockVec[i])),"free all");      		free(((char *)BlockVec[i]));      	}      	/* and give free */      	free(BlockVec);#ifdef WITH_FLAGS      	fprintf(stderr, STAT_HEAD "*Variable*\t%12u Bytes\n", (unsigned) Mem);      	fprintf(stderr, STAT_HEAD "*Static*  \t%12u Bytes\n", (unsigned) StaticMem);      	fprintf(stderr, STAT_HEAD "*Total*   \t%12u Bytes\n", (unsigned) (Mem+StaticMem));#else      	fprintf(stderr, STAT_HEAD "*Total*\t%u Bytes\n", (unsigned) Mem);#endif    	}	}	fprintf(stderr, STAT_HEAD "============ END OF STATISTICS =============\n");#else	fprintf(stderr, HEAD __FILE__ " not compiled with RM_TEST_DEPTH > 0, call in %s senseless.\n", file);#endif}/* =============================================================================   Function:		Rmalloc_retag		// external //   Author:		Rammi   Date:		12/12/1997   Return:		the pointer p for possible chaining   Parameter:		p		pointer to allocated block (user)   			file		called from   Purpose:		Change file position in header.   ============================================================================= */void * Rmalloc_retag(void *p, const char *file){  if (p) {    begin *info = (begin *)(((char *)p)-START_SPACE);    /* --- test integrity --- */    ControlBlock(info, file);    /* --- change file pos --- */    info->File = file;  }  return p;}/* =============================================================================   Function:		Rmalloc_set_flags		// external //   Author:		Rammi   Date:		12/12/1997   Return:		the pointer p for possible chaining   Parameter:		p               pointer to allocated block (user)                        flags           Flags to set                        file		called from   Purpose:	        Set flags in header   ============================================================================= */void *Rmalloc_set_flags(void *p, RMuint32 flags, const RMascii *file){#ifdef WITH_FLAGS  if (p) {    begin *info = (begin *)(((char *)p)-START_SPACE);    /* --- test integrity --- */    ControlBlock(info, file);    /* --- change flags --- */    info->Flags |= flags;  }#endif  return p;}/* =============================================================================   Function:		Rmalloc_reinit		// external //   Author:		Rammi   Date:		05/28/1998   Return:		---   Parameter:		---   Purpose:	        This reinits the lists. This is only for test purposes.   			DON'T USE THIS FUNCTION!   ============================================================================= */void Rmalloc_reinit(void){#if RM_TEST_DEPTH > 0  int i;  /* --- init list heads (discarding everything!) --- */  for (i = 0;   i < HASHSIZE;   i++) {    memcpy(Chain+i, &ChainTempl, sizeof(begin));    Chain[i].Next = Chain[i].Prev = Chain+i;  }#endif#ifdef GENERATIONS  cur_generation = 0;#endif}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍一区二区三区| 亚洲h在线观看| 在线观看日产精品| 久久国产成人午夜av影院| 国产精品视频你懂的| 欧美日韩亚州综合| 福利一区二区在线观看| 日韩和欧美一区二区三区| 国产精品亲子乱子伦xxxx裸| 欧美在线观看18| 国产精品18久久久久久久久 | 亚洲视频你懂的| 日韩亚洲欧美中文三级| 色爱区综合激月婷婷| 国产乱一区二区| 日本欧美一区二区| 一区二区三区四区精品在线视频 | 日本久久一区二区| 国产a视频精品免费观看| 日韩av中文字幕一区二区三区| 亚洲人精品一区| 日本一区二区三区久久久久久久久不| 在线观看免费一区| 99这里都是精品| 国产麻豆视频精品| 午夜国产精品一区| 1024精品合集| 欧美成人vr18sexvr| 在线观看日韩国产| av电影在线观看不卡| 久久国产尿小便嘘嘘尿| 日本美女视频一区二区| 国产精品久久影院| 国产乱码字幕精品高清av| 欧美激情一区在线| xf在线a精品一区二区视频网站| 91国产福利在线| av电影在线观看不卡| 国产美女在线观看一区| 一区二区三区蜜桃| 亚洲欧美另类小说视频| 欧美激情综合五月色丁香| 26uuu久久天堂性欧美| 91精品麻豆日日躁夜夜躁| 欧美三级乱人伦电影| 日本精品裸体写真集在线观看| 成人综合在线观看| 国产乱码精品一品二品| 五月天精品一区二区三区| 亚洲精品中文字幕在线观看| 久久亚洲欧美国产精品乐播| 日韩三级免费观看| 欧美一区二区三区视频在线| 欧美美女直播网站| 欧美日韩国产影片| 欧美日韩精品是欧美日韩精品| 91久久精品网| 欧美色图天堂网| 欧美年轻男男videosbes| 欧美裸体一区二区三区| 欧美一三区三区四区免费在线看| 欧美人xxxx| 欧美精品色一区二区三区| 91精品国产综合久久蜜臀| 91精品国产色综合久久ai换脸| 欧美理论片在线| 欧美岛国在线观看| 久久综合色一综合色88| 久久久久国产精品免费免费搜索| 2022国产精品视频| 欧美极品美女视频| 亚洲精品乱码久久久久久黑人| 亚洲欧美日韩一区二区三区在线观看| 亚洲青青青在线视频| 一区av在线播放| 日韩成人一区二区三区在线观看| 麻豆精品一区二区综合av| 国内精品第一页| 成人免费高清在线| 91福利社在线观看| 91麻豆精品91久久久久久清纯| 日韩欧美不卡在线观看视频| 国产精品久久久久四虎| 亚洲一区日韩精品中文字幕| 理论电影国产精品| 成人av网站在线观看| 欧美色视频一区| 日韩欧美二区三区| 国产精品国产三级国产有无不卡| 亚洲精品国产成人久久av盗摄 | 中文字幕av一区二区三区高 | 国产福利一区二区三区视频在线 | 久久成人免费电影| 成人黄色大片在线观看| 色综合久久六月婷婷中文字幕| 一本到不卡精品视频在线观看| 欧美日韩一级二级| 2024国产精品| 亚洲一区视频在线| 国产在线观看一区二区| 色婷婷av一区| 国产午夜亚洲精品羞羞网站| 自拍偷拍亚洲综合| 国产盗摄一区二区三区| 欧美日韩精品一区二区| 国产欧美视频在线观看| 亚洲精品国产a| 久久成人18免费观看| 色老汉av一区二区三区| 欧美日本一区二区| 精品久久一区二区| 亚洲一卡二卡三卡四卡| 激情六月婷婷综合| 欧美天堂一区二区三区| 久久久激情视频| 日本sm残虐另类| 色综合天天综合狠狠| 国产偷国产偷精品高清尤物| 天天亚洲美女在线视频| 成人免费毛片片v| 欧美mv日韩mv国产| 性欧美大战久久久久久久久| 丁香婷婷深情五月亚洲| 欧美一区二区三区爱爱| 亚洲欧美乱综合| 成人高清视频免费观看| 日韩精品一区二区三区中文精品| 亚洲最大成人网4388xx| 国产一级精品在线| 欧美大胆一级视频| 国产日韩精品一区二区三区| 国产在线观看一区二区| 91精品一区二区三区久久久久久| 亚洲成a人在线观看| 在线免费视频一区二区| 国产精品剧情在线亚洲| 国产麻豆日韩欧美久久| 国产亚洲精久久久久久| 久久国产生活片100| 欧美一级xxx| 视频一区二区中文字幕| 色菇凉天天综合网| 亚洲黄色av一区| 一本久久精品一区二区| 亚洲欧洲国产日韩| 国产精品香蕉一区二区三区| 久久午夜电影网| 国产精品一区二区无线| 久久网站最新地址| 亚洲一区精品在线| 欧美日韩国产高清一区二区| 亚洲自拍偷拍网站| 色综合天天综合在线视频| 亚洲毛片av在线| 在线中文字幕一区二区| 亚洲图片欧美一区| 欧美日韩不卡一区| 婷婷国产v国产偷v亚洲高清| 欧美精三区欧美精三区| 午夜精品成人在线视频| 欧美麻豆精品久久久久久| 日本中文字幕一区二区视频| 精品国产乱码久久| 福利视频网站一区二区三区| 亚洲伦理在线精品| 欧美性感一区二区三区| 亚洲成av人片在线观看| 91精品婷婷国产综合久久| 亚洲二区视频在线| 91精品国产欧美一区二区| 蜜臀91精品一区二区三区| 26uuu精品一区二区在线观看| 国产精品12区| 中文字幕免费不卡| 91一区二区在线| 五月天一区二区| 精品国产伦一区二区三区观看体验 | 欧美日韩一区中文字幕| 亚洲国产人成综合网站| 777午夜精品免费视频| 免费在线观看视频一区| 国产欧美一区二区精品性| 不卡电影免费在线播放一区| 亚洲一区二区三区国产| 欧美一区二区三区四区五区 | 国产日韩精品视频一区| 91在线观看地址| 偷偷要91色婷婷| 精品国产区一区| 欧美视频一区二区三区| 国产自产高清不卡| 亚洲成av人片一区二区梦乃| 精品国产电影一区二区| 91一区二区在线| 麻豆国产精品一区二区三区| 国产色产综合色产在线视频| 91豆麻精品91久久久久久| 久久电影网电视剧免费观看| 综合网在线视频| 欧美成人伊人久久综合网|