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

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

?? memwrap.c

?? internich公司實現的一個非常非常小的OS
?? C
字號:
/* * FILENAME: memwrap.c * * Copyright 1998- 2004 By InterNiche Technologies Inc. All rights reserved * * Wrapper routines for heap managment routines. These routines bracket * the comventional heap functions like alloc and free, and collect * diagnostic information. Markers to detect buffer overwrites are installed * before and after the allocated blocks, and checked on frees. A table * is also kept to track how many blocks of each size are allocated and * freed. This information can be used to spot memory leaks and optimize * heap usage by the applications. * * MODULE: NTF * * ROUTINES: wrap_alloc(),  wrap_free(),  wrap_stats() * * PORTABLE: yes */#include "license.h"#include "ipport.h"#include "in_utils.h"#include "memwrap.h"    /* include this AFTER ALIGN_TYPE */#ifdef MEM_WRAPPERS     /* whole file can be ifdeffed */extern unsigned memtrapsize;     /* alloc size to dtrap on */struct memman{#if (ALIGN_TYPE > 1)   char  status[ALIGN_TYPE];  /* Marker flag, free flag */#else   char  status[2];           /* need at least two bytes */#endif   /* ALIGN_TYPE */   unsigned length;           /* size of alloced block */   char * data;               /* pointer to alloced data */};/* memory call counters */struct WrapMemStats{   unsigned long brallocs;    /* alloc call counter */   unsigned long brfrees;     /* free call counter */   unsigned long brallocb;    /* alloced byte counter */   unsigned long brfreeb;     /* freed byte counter */   unsigned long brfailed;    /* alloc routine failures */   unsigned long brmaxmem;    /* max. memory alloced at one time */   unsigned brmaxsize;        /* largest single alloc */   char * br_hiaddr;          /* highest address alloced */   char * br_loaddr;          /* lowest address alloced */} brmem;#ifndef MAXHIT#define MAXHIT 30#endif   /* MAXHIT *//* struct to track how many of each block size we alloc */struct memhit{   unsigned size;             /* zero until entry is used */   unsigned long blocks;      /* total alloc calls for this size */   unsigned long curr;        /* current bytes alloced for this size */} hitct[MAXHIT];intwrap_stats(void * pio){   int   i;                   /* hitct index */   unsigned long cblocks;     /* current blocks outstanding */   char  outbuf[50];   ns_printf(pio, "wrappers: allocs: %lu,  frees: %lu,  allocbytes: %lu   freebytes: %lu\n",      brmem.brallocs, brmem.brfrees, brmem.brallocb, brmem.brfreeb );   ns_printf(pio, "alloced: current bytes: %lu  max bytes: %lu\n",      brmem.brallocb - brmem.brfreeb, brmem.brmaxmem );   ns_printf(pio, "biggest block: %u,  allocs failed: %lu\n",      brmem.brmaxsize, brmem.brfailed );   ns_printf(pio, "Block sizes, in size[alloc - free = cur] format:");   for(i = 0; i < MAXHIT; i++)   {      if(hitct[i].size == 0) break;      if(i%3 == 0)         ns_printf(pio, "\n");      cblocks = hitct[i].curr/hitct[i].size; /* current blocks of this size */      sprintf(outbuf, "%5u[%lu-%lu=%lu]",         hitct[i].size,         hitct[i].blocks,              /* allocated blocks of this size */         hitct[i].blocks - cblocks,    /* - freed blocks of this size */         cblocks);                     /* = current blocks of this size */      if(strlen(outbuf) > 50) panic("wrap");      ns_printf(pio, "%-26s", outbuf);   }   ns_printf(pio, "\n");   return 0;}char *wrap_alloc(unsigned size, char *(*alloc_rtn)(unsigned)){   int      i;   int      free;   int      wrapsize;      /* size to alloc including wrap info */   char *   cp;   struct memman * manp;   if(size == memtrapsize)   {      dtrap();   }   /* allocate block big enough for caller plus warpping struct */   wrapsize = size + sizeof(struct memman) + ALIGN_TYPE;   cp = (*alloc_rtn)(wrapsize);   if(!cp)  /* alloc couldn't get memory */   {      brmem.brfailed++;      return NULL;   }   manp = (struct memman *)cp;      /* set mgt structure */   cp += sizeof(struct memman);     /* set pointer to return */   /* check for newest hi/low address */   if(cp > brmem.br_hiaddr)      brmem.br_hiaddr = cp;   if((cp < brmem.br_loaddr) || (brmem.br_loaddr == NULL))      brmem.br_loaddr = cp;   /* fill in wrapping structure for later wrap_free() checking */   manp->status[0] = 'M';     /* add memory marker */   manp->status[1] = 'M';     /* mark as NOT free */   manp->data = cp;   manp->length = size;   *(cp + size) = 'M';     /* end memory marker */   /* keep track of hits on each block size */   free = -1;  /* use -1 to indicate no free hitct[] entry */   for(i = 0; i < MAXHIT; i++)   {      if(hitct[i].size == size)  /* found entry for this size */      {         hitct[i].curr += size;         hitct[i].blocks++;         break;      }      if(hitct[i].size == 0)  /* size not in array */      {         free = i;   /* remember first free slot */         break;      /* make new entry */      }   }   if(free != -1)  /* see if we should start an entry for this size */   {      hitct[i].curr = hitct[i].size = size;      hitct[i].blocks = 1;   }   brmem.brallocs++;   brmem.brallocb += size;   if(brmem.brmaxsize < size) /* new record for a single alloc? */      brmem.brmaxsize = size;   if(brmem.brmaxmem < (brmem.brallocb - brmem.brfreeb)) /* new record for allocation? */      brmem.brmaxmem = brmem.brallocb - brmem.brfreeb;   return (cp);}voidwrap_free(char * ptr, void(*free_rtn)(char *)){   int      i;   char *   cp;   struct memman * manp;   /* make sure the pointer is within the previously allocated range */   if((ptr > brmem.br_hiaddr) ||      (ptr < brmem.br_loaddr))   {      dtrap(); /* maybe this should be a panic.... */      return;   }   /* back up from pointer to get memory manager struct */   manp = (struct memman *)ptr;   manp--;   cp = manp->data;   if(manp->status[0] != 'M')    /* Make sure marker is present */   {      dtrap(); /* bad pointer or corrupt memory */      return;  /* don't confuse system free() */   }   if(manp->status[1] == 'F')    /* Double free ? */   {      dtrap(); /* bad pointer or corrupt memory */      return;  /* don't confuse system free() */   }   manp->status[1] = 'F';     /* mark as free */   if(*(cp + manp->length) != 'M')   {      dtrap();    /* should be panic */      return;   }   brmem.brfrees++;   brmem.brfreeb += manp->length;   for(i = 0; i < MAXHIT; i++)   {      if(hitct[i].size == manp->length)      {         hitct[i].curr -= manp->length;         break;      }   }   cp = (char*)manp;      free_rtn(cp);   /* memory came through wrap_alloc(), free it */}#endif   /* MEM_WRAPPERS */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品综合免费视频观看| 亚洲夂夂婷婷色拍ww47| 成人深夜福利app| 五月天国产精品| 亚洲第一激情av| 日韩av不卡在线观看| 日本网站在线观看一区二区三区| 欧美精品欧美精品系列| 日韩女同互慰一区二区| 自拍偷拍欧美激情| 国产精品国模大尺度视频| 日韩亚洲欧美成人一区| 日韩美女一区二区三区四区| 久久久亚洲高清| **网站欧美大片在线观看| 久久99国产精品免费网站| 韩国精品在线观看| 99精品久久免费看蜜臀剧情介绍| eeuss国产一区二区三区| 欧美专区日韩专区| 日韩一区二区三区四区五区六区| 久久综合久久99| 亚洲美女在线国产| 奇米色777欧美一区二区| 国产精品1区二区.| 欧美丝袜丝nylons| 久久影院视频免费| 亚洲男人都懂的| 国产一区二区网址| 色94色欧美sute亚洲线路一久| 91精品国产全国免费观看| 欧美精品一区二区三区视频| 亚洲人成伊人成综合网小说| 秋霞av亚洲一区二区三| 欧美日韩和欧美的一区二区| 久久亚洲一区二区三区明星换脸| 国产精品国产三级国产普通话99| 日韩影院在线观看| 成人av手机在线观看| 日韩视频免费观看高清完整版 | 国产麻豆精品久久一二三| 91女人视频在线观看| 日韩一区二区三区三四区视频在线观看 | 国产精品正在播放| 欧美在线一二三| 欧美激情一区二区三区蜜桃视频| 一区二区在线观看免费视频播放| 国产在线观看免费一区| 欧美乱妇23p| 亚洲桃色在线一区| 国产精品2024| 精品国产亚洲在线| 日韩电影免费一区| 日本韩国欧美三级| 中文字幕不卡三区| 国产一区久久久| 91精品中文字幕一区二区三区| 亚洲欧洲精品一区二区三区不卡| 精品一区中文字幕| 91精品国产黑色紧身裤美女| 亚洲影院在线观看| 在线看国产一区| 亚洲欧美日韩国产综合| 成人小视频在线观看| 日韩精品一区二区在线| 婷婷中文字幕综合| 欧美影视一区二区三区| 一区二区三区精品视频| 97久久超碰国产精品电影| 国产精品嫩草久久久久| 成人午夜私人影院| 国产精品五月天| 成人激情免费电影网址| 国产欧美一区二区在线观看| 韩国精品在线观看| 国产欧美一区二区精品秋霞影院 | 国模娜娜一区二区三区| 欧美一区二区视频在线观看 | 天堂av在线一区| 欧美精品高清视频| 天天影视涩香欲综合网| 欧美一区二区视频在线观看2020 | 精品视频在线视频| 亚洲成av人片一区二区三区| 在线电影院国产精品| 看片的网站亚洲| 国产亚洲婷婷免费| 高清beeg欧美| 亚洲精品免费在线播放| 在线观看日韩电影| 日韩电影在线免费看| 久久久久久99精品| 99久久综合国产精品| 一级日本不卡的影视| 日韩一级精品视频在线观看| 国产白丝精品91爽爽久久| 亚洲四区在线观看| 日韩一区二区不卡| 粉嫩蜜臀av国产精品网站| 亚洲日本免费电影| 678五月天丁香亚洲综合网| 紧缚奴在线一区二区三区| 久久久久国产精品人| 91久久精品国产91性色tv| 日本在线观看不卡视频| 国产精品天天看| 3751色影院一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 欧美激情一区二区三区蜜桃视频| 欧美综合久久久| 国产精品一区二区无线| 亚洲综合视频在线观看| 精品国产网站在线观看| 色网综合在线观看| 国产一区二区在线免费观看| 亚洲美女淫视频| 久久久综合视频| 678五月天丁香亚洲综合网| 不卡一区二区三区四区| 韩国理伦片一区二区三区在线播放| 最新欧美精品一区二区三区| 欧美一区二区三区视频免费播放| 风间由美一区二区三区在线观看| 五月婷婷久久综合| 亚洲天堂av一区| 亚洲国产电影在线观看| 国产精品久久国产精麻豆99网站| 欧美一级理论性理论a| 成人深夜视频在线观看| 国产一区二区三区四区五区入口 | 欧美精品亚洲二区| 972aa.com艺术欧美| 国产精品一区在线| 老司机精品视频线观看86| 亚洲成人自拍偷拍| 亚洲综合色婷婷| 亚洲色图欧洲色图| 欧美国产一区视频在线观看| 日韩午夜电影在线观看| 精品视频资源站| 欧美在线你懂得| 欧洲一区二区av| 色噜噜狠狠成人中文综合| 99久久婷婷国产综合精品电影| 国产成人午夜电影网| 韩国av一区二区| 国产在线不卡一区| 国产盗摄一区二区三区| 懂色中文一区二区在线播放| 国产美女视频一区| 91精品国产色综合久久ai换脸| 欧美午夜一区二区三区免费大片| 91免费视频网| 91久久免费观看| 欧美中文字幕亚洲一区二区va在线| 色综合咪咪久久| 在线一区二区三区四区五区| 欧美在线看片a免费观看| 欧美三级电影一区| 日韩情涩欧美日韩视频| 26uuu国产电影一区二区| 国产精品午夜免费| 亚洲欧美在线另类| 夜夜操天天操亚洲| 日韩国产欧美三级| 麻豆国产一区二区| 国产乱一区二区| 99久久99久久免费精品蜜臀| 色88888久久久久久影院按摩| 色噜噜狠狠色综合欧洲selulu| 欧美日韩精品一区二区天天拍小说 | 成人黄色av电影| 欧美制服丝袜第一页| 欧美一级久久久| 国产精品热久久久久夜色精品三区| 国产精品成人免费精品自在线观看 | 成人一级片在线观看| 色噜噜久久综合| 日韩一级精品视频在线观看| 国产精品私人自拍| 亚洲成人在线免费| 国产91丝袜在线播放| 欧美在线观看一二区| 久久精品日韩一区二区三区| 亚洲女女做受ⅹxx高潮| 久久成人久久爱| 色综合久久六月婷婷中文字幕| 日韩精品在线一区| 亚洲精品免费在线观看| 国产一区在线观看麻豆| 精品污污网站免费看| 中文字幕不卡在线观看| 日韩av电影免费观看高清完整版| proumb性欧美在线观看| 91精品国产高清一区二区三区蜜臀| 国产精品美女久久福利网站| 美女尤物国产一区| 欧美午夜视频网站| 最新成人av在线| 国产在线精品国自产拍免费|