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

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

?? heap.h

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? H
字號:
/***
*heap.h - Heap code include file
*
*       Copyright (c) 1988-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       Contains information needed by the C library heap code.
*
*       [Internal]
*
****/

#if _MSC_VER > 1000
#pragma once
#endif  /* _MSC_VER > 1000 */

#ifndef _INC_HEAP
#define _INC_HEAP

#ifndef _CRTBLD
/*
 * This is an internal C runtime header file. It is used when building
 * the C runtimes only. It is not to be used as a public header file.
 */
#error ERROR: Use of C runtime library internal header file.
#endif  /* _CRTBLD */

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */

#include <cruntime.h>


/* Define __cdecl for non-Microsoft compilers */

#if (!defined (_MSC_VER) && !defined (__cdecl))
#define __cdecl
#endif  /* (!defined (_MSC_VER) && !defined (__cdecl)) */

/*
 * Heap block descriptor
 */

struct _block_descriptor {
        struct _block_descriptor *pnextdesc;    /* ptr to next descriptor */
        void *pblock;               /* ptr to memory block */
};

#define _BLKDESC    struct _block_descriptor
#define _PBLKDESC   struct _block_descriptor *


/*
 * Useful constants
 */

/*
 * Unit of allocation. All allocations are of size n * _GRANULARITY. Note
 * that _GRANULARITY must be a power of 2, or it cannot be used with the
 * _ROUND2 macro.
 */
#if defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) || defined (_M_MPPC)
#define _GRANULARITY    8
#else  /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) || defined (_M_MPPC) */
#define _GRANULARITY    4
#endif  /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) || defined (_M_MPPC) */

/*
 * Size of the header in a memory block. Note that we must have
 * sizeof(void *) <= _HDRSIZE so the header is big enough to hold a pointer
 * to the descriptor.
 */

#define _HDRSIZE    1 * _GRANULARITY

/* _heapchk/_heapset parameter */
#define _HEAP_NOFILL    0x7FFFFFF


/*
 * Descriptor status values
 */

#define _INUSE      0
#define _FREE       1
#define _DUMMY      2


#if _INUSE != 0
#error *** Heap code assumes _INUSE value is 0! ***
#endif  /* _INUSE != 0 */


/*
 * Macros for manipulating heap memory block descriptors
 *      stat = one of the status values
 *      addr = user-visible address of a heap block
 */

#define _STATUS_MASK    0x3 /* last 2 bits are status */

#define _ADDRESS(pdesc)     ( (void *) ((unsigned)((pdesc)->pblock) & \
                    (~_STATUS_MASK)) )
#define _STATUS(pdesc)      ( (unsigned) ((unsigned)((pdesc)->pblock) & \
                    _STATUS_MASK) )

#define _SET_INUSE(pdesc)   ( pdesc->pblock = (void *) \
                       ((unsigned)_ADDRESS(pdesc) | _INUSE) )
#define _SET_FREE(pdesc)    ( pdesc->pblock = (void *) \
                       ((unsigned)_ADDRESS(pdesc) | _FREE) )
#define _SET_DUMMY(pdesc)   ( pdesc->pblock = (void *) \
                       ((unsigned)_ADDRESS(pdesc) | _DUMMY) )

#define _IS_INUSE(pdesc)    ( _STATUS(pdesc) == _INUSE )
#define _IS_FREE(pdesc)     ( _STATUS(pdesc) == _FREE )
#define _IS_DUMMY(pdesc)    ( _STATUS(pdesc) == _DUMMY )

#define _BLKSIZE(pdesc)     ( (unsigned) ( \
                      (char *)_ADDRESS(pdesc->pnextdesc) - \
                      (char *)_ADDRESS(pdesc) - _HDRSIZE ) )

#define _MEMSIZE(pdesc)     ( (char *)_ADDRESS(pdesc->pnextdesc) - \
                      (char *)_ADDRESS(pdesc) )

#define _BACKPTR(addr)      ( *(_PBLKDESC*)((char *)(addr) - _HDRSIZE) )

#define _CHECK_PDESC(pdesc) ( (*(_PBLKDESC*) (_ADDRESS(pdesc))) == pdesc )

#define _CHECK_BACKPTR(addr)    ( ((char *)(_BACKPTR(addr)->pblock) + _HDRSIZE) \
                    == addr)


/*
 * Heap descriptor
 */

struct _heap_desc_ {

        _PBLKDESC pfirstdesc;   /* pointer to first descriptor */
        _PBLKDESC proverdesc;   /* rover pointer */
        _PBLKDESC emptylist;    /* pointer to empty list */

        _BLKDESC  sentinel; /* Sentinel block for end of heap list */

};

extern struct _heap_desc_ _heap_desc;

/*
 * Region descriptor and heap grow data
 */

struct _heap_region_ {
        void * _regbase;    /* base address of region */
        unsigned _currsize; /* current size of region */
        unsigned _totalsize;    /* total size of region */
#ifdef _MAC
        void * _regbaseCopy;    /* save original Ptr and make _regbase at 4 bytes bound */
#endif  /* _MAC */
        };

#define _heap_growsize _amblksiz

extern unsigned int _heap_resetsize;
extern unsigned int _heap_regionsize;
extern unsigned int _heap_maxregsize;
extern struct _heap_region_ _heap_regions[];
extern void ** _heap_descpages;

#ifdef _M_ALPHA
#define _PAGESIZE_      0x2000      /* one page */
#else  /* _M_ALPHA */
#define _PAGESIZE_      0x1000      /* one page */
#endif  /* _M_ALPHA */

#define _SEGSIZE_       0x10000     /* one segment (i.e., 64 Kb) */

#ifdef _WIN32
#define _HEAP_REGIONMAX     0x40        /* Max number of regions: 64 */
                                        /* For small memory systems: */
#define _HEAP_REGIONSIZE_S  0x4000      /* Initial region size (16K) */
#define _HEAP_MAXREGSIZE_S  0x1000000   /* Maximum region size (16M) */
                                        /* For large memory systems: */
#define _HEAP_REGIONSIZE_L  0x100000    /* Initial region size  (1M) */
#define _HEAP_MAXREGSIZE_L  0x1000000   /* Maximum region size (16M) */

#define _HEAP_GROWSIZE      0x10000     /* Default grow increment (64K) */
#else  /* _WIN32 */
#define _HEAP_REGIONMAX     0x20        /* Max number of regions */
#define _HEAP_REGIONSIZE    0x8000  /* Default region size (1/4 meg) */
#define _HEAP_GROWSIZE      0x8000      /* Default grow increment (32K) */
#endif  /* _WIN32 */

#define _HEAP_GROWMIN       _PAGESIZE_  /* Minimum grow inc (1 page) */
#define _HEAP_GROWSTART     _PAGESIZE_  /* Startup grow increment */
#define _HEAP_COALESCE      -1      /* Coalesce heap value */

#define _HEAP_EMPTYLIST_SIZE    (1 * _PAGESIZE_)

/*
 * Values returned by _heap_findaddr() routine
 */

#define _HEAPFIND_EXACT     0   /* found address exactly */
#define _HEAPFIND_WITHIN    1   /* address is within a block */
#define _HEAPFIND_BEFORE    -1  /* address before beginning of heap */
#define _HEAPFIND_AFTER     -2  /* address after end of heap */
#define _HEAPFIND_EMPTY     -3  /* address not found: empty heap */

/*
 * Arguments to _heap_param
 */

#define _HP_GETPARAM    0       /* get heap parameter value */
#define _HP_SETPARAM    1       /* set heap parameter value */

#define _HP_AMBLKSIZ    1       /* get/set _amblksiz value (aka */
#define _HP_GROWSIZE    _HP_AMBLKSIZ    /* _heap_growsize */
#define _HP_RESETSIZE   2       /* get/set _heap_resetsize value */


/*
 * Macros to round numbers
 *
 * _ROUND2 = rounds a number up to a power of 2
 * _ROUND = rounds a number up to any other numer
 *
 * n = number to be rounded
 * pow2 = must be a power of two value
 * r = any number
 */

#define _ROUND2(n,pow2) \
        ( ( n + pow2 - 1) & ~(pow2 - 1) )

#define _ROUND(n,r) \
        ( ( (n/r) + ((n%r)?1:0) ) * r)

/*

   Macros for accessing heap descriptor lists:

        _PUTEMPTY(x) = Puts an empty heap desc on the empty list

        (x = _PBLKDESC = pointer to heap block descriptor)
*/

#ifdef _DEBUG

#define _PUTEMPTY(x) \
{                               \
        (x)->pnextdesc = _heap_desc.emptylist;      \
                                \
        (x)->pblock = NULL;             \
                                \
        _heap_desc.emptylist = (x);         \
}

#else  /* _DEBUG */

#define _PUTEMPTY(x) \
{                               \
        (x)->pnextdesc = _heap_desc.emptylist;      \
                                \
        _heap_desc.emptylist = (x);         \
}

#endif  /* _DEBUG */


/*
 * Macros for finding the next 64 Kb boundary from a pointer
 */

#define _NXTSEGBNDRY(p)     ((void *)((unsigned)(p) & 0xffff0000 + 0x10000))

#define _DISTTOBNDRY(p)     ((unsigned)(0x10000 - (0x0000ffff & (unsigned)(p))))


/*
 * Define size_t type (if necessary)
 */

#ifndef _SIZE_T_DEFINED
typedef unsigned int size_t;
#define _SIZE_T_DEFINED
#endif  /* _SIZE_T_DEFINED */


/*
 * Prototypes
 */

void * __cdecl _nh_malloc(size_t, int);
void * __cdecl _heap_alloc(size_t);
void * __cdecl _flat_malloc(size_t);
_PBLKDESC __getempty(void);
void __cdecl _heap_abort(void);
int __cdecl _heap_addblock(void *, unsigned int);


void __cdecl _heap_free_region(int);
int __cdecl _heap_findaddr(void *, _PBLKDESC *);
int __cdecl _heap_grow(unsigned int);
int __cdecl _heap_grow_region(unsigned, size_t);
#ifdef _MAC
void __cdecl _heap_init(void);
#else  /* _MAC */
int __cdecl _heap_init(void);
#endif  /* _MAC */

int __cdecl _heap_param(int, int, void *);

_PBLKDESC __cdecl _heap_search(unsigned size);
_PBLKDESC __cdecl _heap_split_block(_PBLKDESC, size_t);

#ifdef _DEBUG
void __cdecl _heap_print_all(void);
void __cdecl _heap_print_regions(void);
void __cdecl _heap_print_desc(void);
void __cdecl _heap_print_emptylist(void);
void __cdecl _heap_print_heaplist(void);
#endif  /* _DEBUG */


/*
 * Prototypes and macros for multi-thread support
 */

#ifdef _MT

void __cdecl _free_lk(void *);
size_t __cdecl _msize_lk(void *);
size_t __cdecl _heapused_lk(size_t *pUsed, size_t *pFree);

#ifdef _DEBUG
void __cdecl _heap_print_regions_lk(void);
void __cdecl _heap_print_desc_lk(void);
void __cdecl _heap_print_emptylist_lk(void);
void __cdecl _heap_print_heaplist_lk(void);
#endif  /* _DEBUG */

#else  /* _MT */

#ifdef _MAC
//this needs to be removed after source merge
#define _malloc_lk(s)   malloc(s)
#endif  /* _MAC */

#define _free_lk(p) free(p)
#define _msize_lk(p)    _msize(p)

#ifdef _DEBUG
#define _heap_print_regions_lk()    _heap_print_regions()
#define _heap_print_desc_lk()       _heap_print_desc()
#define _heap_print_emptylist_lk()  _heap_print_emptylist()
#define _heap_print_heaplist_lk()   _heap_print_heaplist()
#endif  /* _DEBUG */

#endif  /* _MT */


#ifdef __cplusplus
}
#endif  /* __cplusplus */

#endif  /* _INC_HEAP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久毛片高清国产| 精品制服美女久久| 免费在线观看一区| 成人国产亚洲欧美成人综合网| 在线观看三级视频欧美| 国产女人18毛片水真多成人如厕| 亚洲一卡二卡三卡四卡五卡| 国产精品888| 日韩欧美国产不卡| 亚洲电影激情视频网站| 91丨porny丨首页| 久久久久久久久久久久久女国产乱| 午夜一区二区三区视频| youjizz国产精品| 亚洲精品一区二区三区影院| 香蕉成人伊视频在线观看| 99精品视频在线免费观看| 精品国产一区二区三区久久久蜜月| 亚洲小少妇裸体bbw| 91麻豆国产精品久久| 国产精品久久久久久久久快鸭| 极品尤物av久久免费看| 欧美一二三区精品| 日本一不卡视频| 欧美日本韩国一区| 午夜成人免费视频| 91麻豆精品国产91久久久资源速度| 亚洲精品中文字幕在线观看| 99r精品视频| 国产精品久久久久影院亚瑟 | 这里只有精品99re| 亚洲午夜一区二区三区| 在线观看成人小视频| 亚洲在线一区二区三区| 欧美日韩一区二区三区免费看| 一区二区三区在线视频免费| 91社区在线播放| 亚洲丝袜精品丝袜在线| 在线视频一区二区三区| 五月天一区二区三区| 成人免费观看视频| 日本一区二区三区四区在线视频| 国产精品一二三区在线| 日本一区二区三区免费乱视频| 国产伦理精品不卡| 国产精品久久久久婷婷二区次| 波多野洁衣一区| 亚洲你懂的在线视频| 欧美日韩国产一区二区三区地区| 日韩中文字幕一区二区三区| 日韩一区二区三区精品视频| 国产伦精品一区二区三区免费| 亚洲国产精品精华液2区45| av电影天堂一区二区在线| 有码一区二区三区| 91精选在线观看| 国产精品综合av一区二区国产馆| 国产精品久久久久久久久图文区| 色老头久久综合| 五月婷婷综合网| 国产日产欧美一区| 欧亚一区二区三区| 精品一区二区免费在线观看| 国产精品私房写真福利视频| 欧美亚洲禁片免费| 国产一区999| 亚洲视频 欧洲视频| 欧美一区二区在线视频| 国产成人精品免费视频网站| 亚洲精品国产精华液| 欧美成人伊人久久综合网| av网站免费线看精品| 午夜在线电影亚洲一区| 久久久精品综合| 欧美日韩精品欧美日韩精品一综合| 久久精品国产99国产| 亚洲女女做受ⅹxx高潮| 26uuu精品一区二区| 欧美亚洲图片小说| 丰满亚洲少妇av| 日本欧美肥老太交大片| 亚洲视频精选在线| 久久精品在线免费观看| 欧美一区二区三区免费大片| 99久久婷婷国产综合精品电影 | 久久aⅴ国产欧美74aaa| 亚洲人一二三区| 国产欧美一区二区三区鸳鸯浴 | 欧美精品一区二区久久婷婷| 色94色欧美sute亚洲线路二| 国产精品一色哟哟哟| 日本色综合中文字幕| 亚洲综合一二三区| 中文字幕一区二区三区在线观看| 日韩美女视频在线| 欧美日韩一区二区电影| 91香蕉视频在线| 高清在线成人网| 九九国产精品视频| 免费人成在线不卡| 亚洲成av人片一区二区三区| 亚洲精品一卡二卡| **欧美大码日韩| 国产欧美日韩综合| 国产日韩欧美精品综合| 久久老女人爱爱| 久久综合精品国产一区二区三区| 4438x成人网最大色成网站| 欧洲在线/亚洲| 欧美在线观看视频一区二区| www.欧美色图| 99久久精品费精品国产一区二区 | 日本不卡一区二区三区 | 国产精品一区久久久久| 蜜臀av性久久久久蜜臀aⅴ| 天天综合天天做天天综合| 亚洲成人1区2区| 亚洲成av人片一区二区三区| 天天综合天天做天天综合| 日韩精品乱码免费| 免费成人在线播放| 精品在线播放午夜| 国产一区二区免费在线| 国产精品亚洲一区二区三区妖精| 精品一区免费av| 国产成人aaaa| 成人深夜在线观看| 色天使久久综合网天天| 欧美日韩在线免费视频| 欧美日韩国产一区二区三区地区| 欧美一级爆毛片| 久久免费国产精品| 亚洲欧美偷拍卡通变态| 亚洲国产精品一区二区www| 婷婷成人综合网| 国产美女一区二区| 91麻豆国产自产在线观看| 欧美日韩国产天堂| 精品动漫一区二区三区在线观看| 久久综合色婷婷| 国产精品电影一区二区| 首页国产欧美久久| 国产麻豆精品在线| 在线观看一区二区精品视频| 5858s免费视频成人| 国产亚洲美州欧州综合国| 中文字幕亚洲在| 日本欧美肥老太交大片| 成人理论电影网| 欧美猛男男办公室激情| 2023国产一二三区日本精品2022| 欧美韩国日本不卡| 午夜精品国产更新| 成人在线一区二区三区| 欧美精品777| 国产精品午夜在线观看| 日本中文字幕不卡| 91视频观看视频| 精品国产乱码久久久久久久| 亚洲欧美色图小说| 国产精品一线二线三线精华| 欧美性猛交xxxxxx富婆| 国产精品午夜电影| 美女在线观看视频一区二区| 91视频在线观看免费| 精品国产一区二区三区av性色| 亚洲三级久久久| 国产精品一区二区三区99 | 99久久99久久综合| 精品日韩欧美一区二区| 亚洲精品视频在线观看免费| 国产成人啪午夜精品网站男同| 欧美日韩在线精品一区二区三区激情 | 亚洲综合偷拍欧美一区色| 国产福利一区二区三区在线视频| 欧美精品久久一区| 亚洲婷婷在线视频| 成人黄色综合网站| 精品免费日韩av| 午夜不卡在线视频| 欧洲一区二区三区在线| 中文字幕永久在线不卡| 国产99久久久国产精品免费看| 91精品久久久久久久99蜜桃| 一区二区三区视频在线观看| 99久久精品国产精品久久| 国产夜色精品一区二区av| 久久国产精品区| 宅男噜噜噜66一区二区66| 亚洲制服丝袜av| 色诱亚洲精品久久久久久| 国产精品国模大尺度视频| 成人一区二区三区| 久久精品在线免费观看| 国产美女精品一区二区三区| 精品国产乱码久久久久久影片| 蜜桃av噜噜一区| 精品三级av在线| 精品一区二区三区的国产在线播放| 日韩美女视频在线|