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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? alloca.c

?? Intercom 是一個(gè) Unix系統(tǒng)上靈活的語音傳輸軟件。支持標(biāo)準(zhǔn)音頻壓縮比如GSM, G.711, and G.72x和其他音頻編碼。Intercom專為高速網(wǎng)絡(luò)設(shè)計(jì)來傳輸高品質(zhì)的語音
?? C
字號(hào):
/* alloca.c -- allocate automatically reclaimed memory   (Mostly) portable public-domain implementation -- D A Gwyn   This implementation of the PWB library alloca function,   which is used to allocate space off the run-time stack so   that it is automatically reclaimed upon procedure exit,   was inspired by discussions with J. Q. Johnson of Cornell.   J.Otto Tennant <jot@cray.com> contributed the Cray support.   There are some preprocessor constants that can   be defined when compiling for your specific system, for   improved efficiency; however, the defaults should be okay.   The general concept of this implementation is to keep   track of all alloca-allocated blocks, and reclaim any   that are found to be deeper in the stack than the current   invocation.  This heuristic does not reclaim storage as   soon as it becomes invalid, but it will do so eventually.   As a special case, alloca(0) reclaims storage without   allocating any.  It is a good idea to use alloca(0) in   your main control loop, etc. to force garbage collection.  */#ifdef HAVE_CONFIG_H# include <config.h>#endif#if HAVE_STRING_H# include <string.h>#endif#if HAVE_STDLIB_H# include <stdlib.h>#endif#ifdef emacs# include "blockinput.h"#endif/* If compiling with GCC 2, this file's not needed.  */#if !defined (__GNUC__) || __GNUC__ < 2/* If someone has defined alloca as a macro,   there must be some other way alloca is supposed to work.  */# ifndef alloca#  ifdef emacs#   ifdef static/* actually, only want this if static is defined as ""   -- this is for usg, in which emacs must undefine static   in order to make unexec workable   */#    ifndef STACK_DIRECTIONyoulose-- must know STACK_DIRECTION at compile-time#    endif /* STACK_DIRECTION undefined */#   endif /* static */#  endif /* emacs *//* If your stack is a linked list of frames, you have to   provide an "address metric" ADDRESS_FUNCTION macro.  */#  if defined (CRAY) && defined (CRAY_STACKSEG_END)long i00afunc ();#   define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))#  else#   define ADDRESS_FUNCTION(arg) &(arg)#  endif#  if __STDC__typedef void *pointer;#  elsetypedef char *pointer;#  endif#  ifndef NULL#   define NULL 0#  endif/* Different portions of Emacs need to call different versions of   malloc.  The Emacs executable needs alloca to call xmalloc, because   ordinary malloc isn't protected from input signals.  On the other   hand, the utilities in lib-src need alloca to call malloc; some of   them are very simple, and don't have an xmalloc routine.   Non-Emacs programs expect this to call xmalloc.   Callers below should use malloc.  */#  ifndef emacs#   define malloc xmalloc#  endifextern pointer malloc ();/* Define STACK_DIRECTION if you know the direction of stack   growth for your system; otherwise it will be automatically   deduced at run-time.   STACK_DIRECTION > 0 => grows toward higher addresses   STACK_DIRECTION < 0 => grows toward lower addresses   STACK_DIRECTION = 0 => direction of growth unknown  */#  ifndef STACK_DIRECTION#   define STACK_DIRECTION	0	/* Direction unknown.  */#  endif#  if STACK_DIRECTION != 0#   define STACK_DIR	STACK_DIRECTION	/* Known at compile-time.  */#  else /* STACK_DIRECTION == 0; need run-time code.  */static int stack_dir;		/* 1 or -1 once known.  */#   define STACK_DIR	stack_dirstatic voidfind_stack_direction (){  static char *addr = NULL;	/* Address of first `dummy', once known.  */  auto char dummy;		/* To get stack address.  */  if (addr == NULL)    {				/* Initial entry.  */      addr = ADDRESS_FUNCTION (dummy);      find_stack_direction ();	/* Recurse once.  */    }  else    {      /* Second entry.  */      if (ADDRESS_FUNCTION (dummy) > addr)	stack_dir = 1;		/* Stack grew upward.  */      else	stack_dir = -1;		/* Stack grew downward.  */    }}#  endif /* STACK_DIRECTION == 0 *//* An "alloca header" is used to:   (a) chain together all alloca'ed blocks;   (b) keep track of stack depth.   It is very important that sizeof(header) agree with malloc   alignment chunk size.  The following default should work okay.  */#  ifndef	ALIGN_SIZE#   define ALIGN_SIZE	sizeof(double)#  endiftypedef union hdr{  char align[ALIGN_SIZE];	/* To force sizeof(header).  */  struct    {      union hdr *next;		/* For chaining headers.  */      char *deep;		/* For stack depth measure.  */    } h;} header;static header *last_alloca_header = NULL;	/* -> last alloca header.  *//* Return a pointer to at least SIZE bytes of storage,   which will be automatically reclaimed upon exit from   the procedure that called alloca.  Originally, this space   was supposed to be taken from the current stack frame of the   caller, but that method cannot be made to work for some   implementations of C, for example under Gould's UTX/32.  */pointeralloca (unsigned size){  auto char probe;		/* Probes stack depth: */  register char *depth = ADDRESS_FUNCTION (probe);#  if STACK_DIRECTION == 0  if (STACK_DIR == 0)		/* Unknown growth direction.  */    find_stack_direction ();#  endif  /* Reclaim garbage, defined as all alloca'd storage that     was allocated from deeper in the stack than currently.  */  {    register header *hp;	/* Traverses linked list.  */#  ifdef emacs    BLOCK_INPUT;#  endif    for (hp = last_alloca_header; hp != NULL;)      if ((STACK_DIR > 0 && hp->h.deep > depth)	  || (STACK_DIR < 0 && hp->h.deep < depth))	{	  register header *np = hp->h.next;	  free ((pointer) hp);	/* Collect garbage.  */	  hp = np;		/* -> next header.  */	}      else	break;			/* Rest are not deeper.  */    last_alloca_header = hp;	/* -> last valid storage.  */#  ifdef emacs    UNBLOCK_INPUT;#  endif  }  if (size == 0)    return NULL;		/* No allocation required.  */  /* Allocate combined header + user data storage.  */  {    register pointer new = malloc (sizeof (header) + size);    /* Address of header.  */    if (new == 0)      abort();    ((header *) new)->h.next = last_alloca_header;    ((header *) new)->h.deep = depth;    last_alloca_header = (header *) new;    /* User storage begins just after header.  */    return (pointer) ((char *) new + sizeof (header));  }}#  if defined (CRAY) && defined (CRAY_STACKSEG_END)#   ifdef DEBUG_I00AFUNC#    include <stdio.h>#   endif#   ifndef CRAY_STACK#    define CRAY_STACK#    ifndef CRAY2/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */struct stack_control_header  {    long shgrow:32;		/* Number of times stack has grown.  */    long shaseg:32;		/* Size of increments to stack.  */    long shhwm:32;		/* High water mark of stack.  */    long shsize:32;		/* Current size of stack (all segments).  */  };/* The stack segment linkage control information occurs at   the high-address end of a stack segment.  (The stack   grows from low addresses to high addresses.)  The initial   part of the stack segment linkage control information is   0200 (octal) words.  This provides for register storage   for the routine which overflows the stack.  */struct stack_segment_linkage  {    long ss[0200];		/* 0200 overflow words.  */    long sssize:32;		/* Number of words in this segment.  */    long ssbase:32;		/* Offset to stack base.  */    long:32;    long sspseg:32;		/* Offset to linkage control of previous				   segment of stack.  */    long:32;    long sstcpt:32;		/* Pointer to task common address block.  */    long sscsnm;		/* Private control structure number for				   microtasking.  */    long ssusr1;		/* Reserved for user.  */    long ssusr2;		/* Reserved for user.  */    long sstpid;		/* Process ID for pid based multi-tasking.  */    long ssgvup;		/* Pointer to multitasking thread giveup.  */    long sscray[7];		/* Reserved for Cray Research.  */    long ssa0;    long ssa1;    long ssa2;    long ssa3;    long ssa4;    long ssa5;    long ssa6;    long ssa7;    long sss0;    long sss1;    long sss2;    long sss3;    long sss4;    long sss5;    long sss6;    long sss7;  };#    else /* CRAY2 *//* The following structure defines the vector of words   returned by the STKSTAT library routine.  */struct stk_stat  {    long now;			/* Current total stack size.  */    long maxc;			/* Amount of contiguous space which would				   be required to satisfy the maximum				   stack demand to date.  */    long high_water;		/* Stack high-water mark.  */    long overflows;		/* Number of stack overflow ($STKOFEN) calls.  */    long hits;			/* Number of internal buffer hits.  */    long extends;		/* Number of block extensions.  */    long stko_mallocs;		/* Block allocations by $STKOFEN.  */    long underflows;		/* Number of stack underflow calls ($STKRETN).  */    long stko_free;		/* Number of deallocations by $STKRETN.  */    long stkm_free;		/* Number of deallocations by $STKMRET.  */    long segments;		/* Current number of stack segments.  */    long maxs;			/* Maximum number of stack segments so far.  */    long pad_size;		/* Stack pad size.  */    long current_address;	/* Current stack segment address.  */    long current_size;		/* Current stack segment size.  This				   number is actually corrupted by STKSTAT to				   include the fifteen word trailer area.  */    long initial_address;	/* Address of initial segment.  */    long initial_size;		/* Size of initial segment.  */  };/* The following structure describes the data structure which trails   any stack segment.  I think that the description in 'asdef' is   out of date.  I only describe the parts that I am sure about.  */struct stk_trailer  {    long this_address;		/* Address of this block.  */    long this_size;		/* Size of this block (does not include				   this trailer).  */    long unknown2;    long unknown3;    long link;			/* Address of trailer block of previous				   segment.  */    long unknown5;    long unknown6;    long unknown7;    long unknown8;    long unknown9;    long unknown10;    long unknown11;    long unknown12;    long unknown13;    long unknown14;  };#    endif /* CRAY2 */#   endif /* not CRAY_STACK */#   ifdef CRAY2/* Determine a "stack measure" for an arbitrary ADDRESS.   I doubt that "lint" will like this much.  */static longi00afunc (long *address){  struct stk_stat status;  struct stk_trailer *trailer;  long *block, size;  long result = 0;  /* We want to iterate through all of the segments.  The first     step is to get the stack status structure.  We could do this     more quickly and more directly, perhaps, by referencing the     $LM00 common block, but I know that this works.  */  STKSTAT (&status);  /* Set up the iteration.  */  trailer = (struct stk_trailer *) (status.current_address				    + status.current_size				    - 15);  /* There must be at least one stack segment.  Therefore it is     a fatal error if "trailer" is null.  */  if (trailer == 0)    abort ();  /* Discard segments that do not contain our argument address.  */  while (trailer != 0)    {      block = (long *) trailer->this_address;      size = trailer->this_size;      if (block == 0 || size == 0)	abort ();      trailer = (struct stk_trailer *) trailer->link;      if ((block <= address) && (address < (block + size)))	break;    }  /* Set the result to the offset in this segment and add the sizes     of all predecessor segments.  */  result = address - block;  if (trailer == 0)    {      return result;    }  do    {      if (trailer->this_size <= 0)	abort ();      result += trailer->this_size;      trailer = (struct stk_trailer *) trailer->link;    }  while (trailer != 0);  /* We are done.  Note that if you present a bogus address (one     not in any segment), you will get a different number back, formed     from subtracting the address of the first block.  This is probably     not what you want.  */  return (result);}#   else /* not CRAY2 *//* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.   Determine the number of the cell within the stack,   given the address of the cell.  The purpose of this   routine is to linearize, in some sense, stack addresses   for alloca.  */static longi00afunc (long address){  long stkl = 0;  long size, pseg, this_segment, stack;  long result = 0;  struct stack_segment_linkage *ssptr;  /* Register B67 contains the address of the end of the     current stack segment.  If you (as a subprogram) store     your registers on the stack and find that you are past     the contents of B67, you have overflowed the segment.     B67 also points to the stack segment linkage control     area, which is what we are really interested in.  */  stkl = CRAY_STACKSEG_END ();  ssptr = (struct stack_segment_linkage *) stkl;  /* If one subtracts 'size' from the end of the segment,     one has the address of the first word of the segment.     If this is not the first segment, 'pseg' will be     nonzero.  */  pseg = ssptr->sspseg;  size = ssptr->sssize;  this_segment = stkl - size;  /* It is possible that calling this routine itself caused     a stack overflow.  Discard stack segments which do not     contain the target address.  */  while (!(this_segment <= address && address <= stkl))    {#    ifdef DEBUG_I00AFUNC      fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);#    endif      if (pseg == 0)	break;      stkl = stkl - pseg;      ssptr = (struct stack_segment_linkage *) stkl;      size = ssptr->sssize;      pseg = ssptr->sspseg;      this_segment = stkl - size;    }  result = address - this_segment;  /* If you subtract pseg from the current end of the stack,     you get the address of the previous stack segment's end.     This seems a little convoluted to me, but I'll bet you save     a cycle somewhere.  */  while (pseg != 0)    {#    ifdef DEBUG_I00AFUNC      fprintf (stderr, "%011o %011o\n", pseg, size);#    endif      stkl = stkl - pseg;      ssptr = (struct stack_segment_linkage *) stkl;      size = ssptr->sssize;      pseg = ssptr->sspseg;      result += size;    }  return (result);}#   endif /* not CRAY2 */#  endif /* CRAY */# endif /* no alloca */#endif /* not GCC version 2 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩在线一区二区| 亚洲国产精品成人久久综合一区| 国产亚洲精品中文字幕| 青青青爽久久午夜综合久久午夜| 色欧美片视频在线观看在线视频| 国产视频一区二区在线观看| 在线视频欧美区| 亚洲国产精品自拍| 欧美性猛片aaaaaaa做受| 午夜欧美大尺度福利影院在线看| 欧美日韩一区在线| 高清国产一区二区| 国产精品久久久久久久久动漫 | 国产无一区二区| 欧美三区免费完整视频在线观看| 国产福利电影一区二区三区| 国产精品美女www爽爽爽| 91亚洲精品乱码久久久久久蜜桃 | 日韩av中文字幕一区二区三区| 欧美精品v国产精品v日韩精品| 日韩精品亚洲专区| 精品国产乱码久久久久久影片| 韩国视频一区二区| 欧美国产日韩一二三区| 日韩精品综合一本久道在线视频| 国产精品888| 有码一区二区三区| 4438成人网| 成人avav在线| 午夜欧美在线一二页| 亚洲欧美aⅴ...| 欧美一区二区三区日韩视频| 高清成人在线观看| 国产精品一区二区在线看| 久久国产乱子精品免费女| 国产精品久久久久精k8| 中文子幕无线码一区tr| 久久久蜜桃精品| 欧美日韩一区二区三区不卡| 色妹子一区二区| 美女www一区二区| 国产精品视频线看| 国产女人18水真多18精品一级做| 欧美性大战久久久| 欧美在线观看禁18| 欧美调教femdomvk| 在线精品视频小说1| 色婷婷久久一区二区三区麻豆| 色综合 综合色| 欧美专区日韩专区| 欧美日韩国产片| 97精品国产露脸对白| 久久9热精品视频| 激情伊人五月天久久综合| 韩国精品久久久| 丁香五精品蜜臀久久久久99网站| 粉嫩aⅴ一区二区三区四区| 99精品热视频| 欧美最猛性xxxxx直播| 欧美日韩一区三区| 日韩一级黄色片| 欧美日韩午夜在线视频| 欧美巨大另类极品videosbest | 久久九九久久九九| 日本一区二区免费在线观看视频 | 欧美人动与zoxxxx乱| 欧美精品在线视频| 日韩欧美国产一二三区| 久久久99精品久久| 中文天堂在线一区| 夜色激情一区二区| 国产精品久久久久久久久图文区| 亚洲色图在线看| 国产精品毛片a∨一区二区三区| 中文字幕亚洲欧美在线不卡| 久久青草国产手机看片福利盒子 | 欧美一级欧美三级| 久久精品夜色噜噜亚洲a∨| 中文字幕一区二区三区精华液| 亚洲一卡二卡三卡四卡无卡久久| 中文字幕在线不卡一区| 一区二区三区四区不卡视频| 日韩国产欧美视频| 国产成人免费视频| 在线观看日韩av先锋影音电影院| 日韩区在线观看| 国产精品初高中害羞小美女文| 无吗不卡中文字幕| 国产精品影音先锋| 欧美日韩一区小说| 亚洲国产精品二十页| 日韩高清不卡一区二区| 成人h动漫精品一区二| 91.xcao| 国产精品女同一区二区三区| 午夜久久久久久久久| 成人免费av网站| 色综合久久天天| 精品处破学生在线二十三| 亚洲精品日韩一| 国产精品亚洲第一区在线暖暖韩国| 日本道在线观看一区二区| 久久久精品日韩欧美| 午夜精品国产更新| av电影在线观看一区| 91网址在线看| 久久久久久久久久电影| 午夜在线成人av| 久久不见久久见免费视频1| 色噜噜久久综合| 国产日本欧洲亚洲| 免费精品视频在线| 在线观看日韩av先锋影音电影院| 国产调教视频一区| 蜜桃av一区二区| 欧美性大战xxxxx久久久| |精品福利一区二区三区| 国产精品一区久久久久| 日韩欧美一区在线| 一区二区三区免费在线观看| 成人精品视频一区二区三区| 精品久久一区二区| 国产精品高潮呻吟| 国产剧情av麻豆香蕉精品| 日韩一区二区三区视频在线| 一区二区三区国产| 91免费视频网| 国产精品蜜臀av| 成人免费精品视频| 国产欧美日韩一区二区三区在线观看| 久久99热这里只有精品| 欧美一级国产精品| 日韩av电影天堂| 欧美一区二区三区日韩视频| 日日欢夜夜爽一区| 欧美伦理电影网| 日韩二区三区四区| 欧美一区二区三区免费| 日韩二区在线观看| 欧美一级免费观看| 972aa.com艺术欧美| 中文字幕乱码亚洲精品一区| 国产麻豆欧美日韩一区| 在线区一区二视频| 亚洲综合免费观看高清在线观看| 一本一本久久a久久精品综合麻豆| 国产精品视频第一区| 成人av免费在线| 亚洲猫色日本管| 在线观看av一区| 丝袜亚洲另类欧美综合| 欧美乱熟臀69xxxxxx| 蜜桃一区二区三区在线| 欧美电影免费观看高清完整版在| 韩国女主播一区| 国产精品污污网站在线观看| 一本大道久久a久久精二百| 亚洲一区二区精品久久av| 337p亚洲精品色噜噜噜| 久久精品国产成人一区二区三区| 久久综合久久综合久久综合| 亚洲高清免费观看| 5858s免费视频成人| 老色鬼精品视频在线观看播放| 欧美精品一区二区三区蜜臀| 成人免费视频免费观看| 亚洲欧美日韩小说| 制服丝袜中文字幕亚洲| 国产米奇在线777精品观看| 国产精品久久久久一区二区三区| 色婷婷亚洲综合| 日本不卡一二三| 中文字幕精品—区二区四季| 欧美专区在线观看一区| 青青草国产成人99久久| 国产欧美视频一区二区三区| 日本国产一区二区| 日韩av中文在线观看| 欧美激情一二三区| 色婷婷av一区二区三区大白胸| 轻轻草成人在线| 国产精品久久久久9999吃药| 欧美女孩性生活视频| 国产高清亚洲一区| 亚洲成a人v欧美综合天堂| 久久嫩草精品久久久精品| 色哟哟欧美精品| 久草中文综合在线| 26uuuu精品一区二区| 色悠悠亚洲一区二区| 美女视频黄久久| 亚洲四区在线观看| 26uuu国产日韩综合| 欧美熟乱第一页| 国产成人精品亚洲午夜麻豆| 亚洲国产aⅴ天堂久久| 国产色婷婷亚洲99精品小说| 欧美久久久久久久久中文字幕| 丁香婷婷综合网| 蜜臀久久99精品久久久久宅男 |