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

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

?? free.c

?? 內存分配的各種包裝函數
?? C
字號:
/* Free a block of memory allocated by `malloc'.   Copyright 1990, 1991, 1992, 1994 Free Software Foundation, Inc.		  Written May 1989 by Mike Haertel.This library is free software; you can redistribute it and/ormodify it under the terms of the GNU Library General Public License aspublished by the Free Software Foundation; either version 2 of theLicense, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULibrary General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with this library; see the file COPYING.LIB.  Ifnot, write to the Free Software Foundation, Inc., 675 Mass Ave,Cambridge, MA 02139, USA.   The author may be reached (Email) at the address mike@ai.mit.edu,   or (US mail) as Mike Haertel c/o Free Software Foundation.  */#ifndef	_MALLOC_INTERNAL#define _MALLOC_INTERNAL#include <malloc.h>#endif/* Debugging hook for free.  */void (*__free_hook) __P ((__ptr_t __ptr));/* List of blocks allocated by memalign.  */struct alignlist *_aligned_blocks = NULL;/* Return memory to the heap.   Like `free' but don't call a __free_hook if there is one.  */void_free_internal (ptr)     __ptr_t ptr;{  int type;  __malloc_size_t block, blocks;  register __malloc_size_t i;  struct list *prev, *next;  block = BLOCK (ptr);  type = _heapinfo[block].busy.type;  switch (type)    {    case 0:      /* Get as many statistics as early as we can.  */      --_chunks_used;      _bytes_used -= _heapinfo[block].busy.info.size * BLOCKSIZE;      _bytes_free += _heapinfo[block].busy.info.size * BLOCKSIZE;      /* Find the free cluster previous to this one in the free list.	 Start searching at the last block referenced; this may benefit	 programs with locality of allocation.  */      i = _heapindex;      if (i > block)	while (i > block)	  i = _heapinfo[i].free.prev;      else	{	  do	    i = _heapinfo[i].free.next;	  while (i > 0 && i < block);	  i = _heapinfo[i].free.prev;	}      /* Determine how to link this block into the free list.  */      if (block == i + _heapinfo[i].free.size)	{	  /* Coalesce this block with its predecessor.  */	  _heapinfo[i].free.size += _heapinfo[block].busy.info.size;	  block = i;	}      else	{	  /* Really link this block back into the free list.  */	  _heapinfo[block].free.size = _heapinfo[block].busy.info.size;	  _heapinfo[block].free.next = _heapinfo[i].free.next;	  _heapinfo[block].free.prev = i;	  _heapinfo[i].free.next = block;	  _heapinfo[_heapinfo[block].free.next].free.prev = block;	  ++_chunks_free;	}      /* Now that the block is linked in, see if we can coalesce it	 with its successor (by deleting its successor from the list	 and adding in its size).  */      if (block + _heapinfo[block].free.size == _heapinfo[block].free.next)	{	  _heapinfo[block].free.size	    += _heapinfo[_heapinfo[block].free.next].free.size;	  _heapinfo[block].free.next	    = _heapinfo[_heapinfo[block].free.next].free.next;	  _heapinfo[_heapinfo[block].free.next].free.prev = block;	  --_chunks_free;	}      /* Now see if we can return stuff to the system.  */      blocks = _heapinfo[block].free.size;      if (blocks >= FINAL_FREE_BLOCKS && block + blocks == _heaplimit	  && (*__morecore) (0) == ADDRESS (block + blocks))	{	  register __malloc_size_t bytes = blocks * BLOCKSIZE;	  _heaplimit -= blocks;	  (*__morecore) (-bytes);	  _heapinfo[_heapinfo[block].free.prev].free.next	    = _heapinfo[block].free.next;	  _heapinfo[_heapinfo[block].free.next].free.prev	    = _heapinfo[block].free.prev;	  block = _heapinfo[block].free.prev;	  --_chunks_free;	  _bytes_free -= bytes;	}      /* Set the next search to begin at this block.  */      _heapindex = block;      break;    default:      /* Do some of the statistics.  */      --_chunks_used;      _bytes_used -= 1 << type;      ++_chunks_free;      _bytes_free += 1 << type;      /* Get the address of the first free fragment in this block.  */      prev = (struct list *) ((char *) ADDRESS (block) +			   (_heapinfo[block].busy.info.frag.first << type));      if (_heapinfo[block].busy.info.frag.nfree == (BLOCKSIZE >> type) - 1)	{	  /* If all fragments of this block are free, remove them	     from the fragment list and free the whole block.  */	  next = prev;	  for (i = 1; i < (__malloc_size_t) (BLOCKSIZE >> type); ++i)	    next = next->next;	  prev->prev->next = next;	  if (next != NULL)	    next->prev = prev->prev;	  _heapinfo[block].busy.type = 0;	  _heapinfo[block].busy.info.size = 1;	  /* Keep the statistics accurate.  */	  ++_chunks_used;	  _bytes_used += BLOCKSIZE;	  _chunks_free -= BLOCKSIZE >> type;	  _bytes_free -= BLOCKSIZE;	  free (ADDRESS (block));	}      else if (_heapinfo[block].busy.info.frag.nfree != 0)	{	  /* If some fragments of this block are free, link this	     fragment into the fragment list after the first free	     fragment of this block. */	  next = (struct list *) ptr;	  next->next = prev->next;	  next->prev = prev;	  prev->next = next;	  if (next->next != NULL)	    next->next->prev = next;	  ++_heapinfo[block].busy.info.frag.nfree;	}      else	{	  /* No fragments of this block are free, so link this	     fragment into the fragment list and announce that	     it is the first free fragment of this block. */	  prev = (struct list *) ptr;	  _heapinfo[block].busy.info.frag.nfree = 1;	  _heapinfo[block].busy.info.frag.first = (unsigned long int)	    ((unsigned long int) ((char *) ptr - (char *) NULL)	     % BLOCKSIZE >> type);	  prev->next = _fraghead[type].next;	  prev->prev = &_fraghead[type];	  prev->prev->next = prev;	  if (prev->next != NULL)	    prev->next->prev = prev;	}      break;    }}/* Return memory to the heap.  */voidfree (ptr)     __ptr_t ptr;{  register struct alignlist *l;  if (ptr == NULL)    return;  for (l = _aligned_blocks; l != NULL; l = l->next)    if (l->aligned == ptr)      {	l->aligned = NULL;	/* Mark the slot in the list as free.  */	ptr = l->exact;	break;      }  if (__free_hook != NULL)    (*__free_hook) (ptr);  else    _free_internal (ptr);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜在线观看| 欧美videos中文字幕| 欧美午夜电影在线播放| 欧美美女黄视频| 久久久久久麻豆| 夜夜嗨av一区二区三区中文字幕 | 国产丝袜欧美中文另类| 亚洲男人都懂的| 日产国产高清一区二区三区| 精品一区二区国语对白| 99这里只有久久精品视频| 欧美性videosxxxxx| 久久久久亚洲蜜桃| 偷拍亚洲欧洲综合| 成人黄色在线看| 91精品久久久久久久久99蜜臂| 中文字幕欧美三区| 无吗不卡中文字幕| av电影在线不卡| 欧美成人性福生活免费看| 亚洲专区一二三| 国产999精品久久久久久绿帽| 91成人在线精品| 国产精品色在线观看| 蜜桃视频一区二区| 欧美日本免费一区二区三区| 中文字幕av在线一区二区三区| 美女网站色91| 精品视频1区2区3区| 亚洲伦在线观看| 成人av在线网| 国产精品久久久久久久蜜臀| 国产不卡视频在线观看| 欧美v日韩v国产v| 蜜桃视频一区二区三区在线观看| 欧美日韩国产一级二级| 亚洲精品亚洲人成人网| 91丨porny丨户外露出| 18欧美乱大交hd1984| 91蜜桃免费观看视频| 亚洲婷婷在线视频| 欧洲国内综合视频| 日本不卡免费在线视频| 欧美精品高清视频| 日韩av网站免费在线| 精品久久久久久久久久久院品网| 日本美女视频一区二区| 欧美tickling挠脚心丨vk| 国产精品性做久久久久久| 久久精品这里都是精品| 成人免费视频caoporn| 亚洲人成在线播放网站岛国| 91高清在线观看| 麻豆91小视频| 国产精品久久久久7777按摩 | 裸体一区二区三区| 日韩无一区二区| 成人免费电影视频| 一区二区不卡在线播放| 日韩免费观看高清完整版在线观看| 国产一区二区在线看| 国产精品天美传媒| 国产精品久久久久天堂| 欧美福利视频一区| 成人做爰69片免费看网站| 亚洲一级片在线观看| 国产亚洲欧洲997久久综合| 一本到不卡精品视频在线观看| 日本欧美在线观看| 亚洲午夜视频在线| 日韩免费观看高清完整版 | 亚洲女子a中天字幕| 欧美视频日韩视频在线观看| 国产乱国产乱300精品| 亚洲国产美女搞黄色| 国产嫩草影院久久久久| 3d成人动漫网站| 91网站最新网址| 福利视频网站一区二区三区| 丝袜国产日韩另类美女| 亚洲女人****多毛耸耸8| 国产亚洲自拍一区| 日韩欧美成人一区| 在线不卡中文字幕播放| 欧美系列日韩一区| 欧美色成人综合| 色婷婷久久久亚洲一区二区三区| 韩国视频一区二区| 麻豆国产91在线播放| 另类调教123区| 九色|91porny| 久久电影网站中文字幕| 日本欧美一区二区三区乱码| 毛片不卡一区二区| 久久激五月天综合精品| 久久成人免费网站| 国产99久久久久久免费看农村| 国产精品99久久久久久有的能看| 韩国女主播成人在线| 国产米奇在线777精品观看| 九色综合国产一区二区三区| 极品美女销魂一区二区三区| 国产毛片精品视频| 成人黄色一级视频| 欧美性生活久久| 日韩欧美一区电影| 国产日韩欧美在线一区| 亚洲欧洲成人精品av97| 亚洲国产精品视频| 欧美日韩免费视频| 精品久久久久一区| 国产精品无遮挡| 亚洲午夜久久久久久久久电影网| 日韩电影一二三区| 国产成人精品免费看| 色婷婷国产精品久久包臀| 69堂成人精品免费视频| 久久久国产一区二区三区四区小说| 国产精品丝袜黑色高跟| 亚洲成人精品影院| 国产高清不卡二三区| 欧美日韩在线观看一区二区| 精品国产乱子伦一区| 国产精品美日韩| 麻豆成人91精品二区三区| 成人看片黄a免费看在线| 欧美日韩国产高清一区二区| 国产欧美日韩另类一区| 天天色综合天天| 一本色道久久加勒比精品| 久久亚洲精精品中文字幕早川悠里 | 亚洲欧洲av另类| 麻豆视频观看网址久久| 欧美亚洲一区三区| 国产精品理论片在线观看| 久久se精品一区精品二区| 欧美三级韩国三级日本三斤| 国产精品久久免费看| 激情五月播播久久久精品| 欧美视频日韩视频| 亚洲美女淫视频| jvid福利写真一区二区三区| 2024国产精品视频| 国产在线国偷精品产拍免费yy| 欧美久久久一区| 亚洲网友自拍偷拍| 欧洲在线/亚洲| 亚洲最色的网站| 欧美色国产精品| 日韩精品一二三| 制服丝袜亚洲色图| 奇米在线7777在线精品| 日韩欧美成人一区二区| 国产一区二区不卡在线| 中文字幕第一区综合| 成人动漫av在线| 一区二区中文字幕在线| 在线观看成人小视频| 一片黄亚洲嫩模| 欧美日韩免费电影| 麻豆视频一区二区| 激情图区综合网| 欧美激情一区在线| 色悠悠久久综合| 日本中文一区二区三区| 久久网站热最新地址| 91丨国产丨九色丨pron| 一区二区三区加勒比av| 制服丝袜亚洲精品中文字幕| 国产福利精品导航| 一区二区三区国产豹纹内裤在线| 91精品国产色综合久久不卡电影 | 国产精品私人自拍| 欧美三电影在线| 国产乱码精品一区二区三| 一区二区三区91| 久久久久久久国产精品影院| 91搞黄在线观看| 国产成人综合网站| 五月婷婷激情综合| 国产精品人人做人人爽人人添| 欧美日韩精品电影| 成人小视频在线| 日产欧产美韩系列久久99| 亚洲人成人一区二区在线观看| 欧美成人伊人久久综合网| 99re这里都是精品| 国产精品一区二区x88av| 午夜精品aaa| 亚洲精品日韩综合观看成人91| 久久综合久久99| 欧美一区二区三区系列电影| 色综合天天综合| 高清av一区二区| 色婷婷av一区二区三区大白胸| 久久成人免费日本黄色| 免费欧美高清视频| 日本在线播放一区二区三区| 亚洲制服欧美中文字幕中文字幕| 亚洲人成7777|