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

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

?? heapchk.c

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? C
字號:
/***
*heapchk.c - perform a consistency check on the heap
*
*       Copyright (c) 1989-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       Defines the _heapchk() and _heapset() functions
*
*******************************************************************************/


#ifdef WINHEAP


#include <cruntime.h>
#include <windows.h>
#include <errno.h>
#include <malloc.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <winheap.h>


/***
*int _heapchk()         - Validate the heap
*int _heapset(_fill)    - Obsolete function!
*
*Purpose:
*       Both functions perform a consistency check on the heap. The old
*       _heapset used to fill free blocks with _fill, in addition to
*       performing the consistency check. The current _heapset ignores the
*       passed parameter and just returns _heapchk.
*
*Entry:
*       For heapchk()
*           No arguments
*       For heapset()
*           int _fill - ignored
*
*Exit:
*       Returns one of the following values:
*
*           _HEAPOK         - completed okay
*           _HEAPEMPTY      - heap not initialized
*           _HEAPBADBEGIN   - can't find initial header info
*           _HEAPBADNODE    - malformed node somewhere
*
*       Debug version prints out a diagnostic message if an error is found
*       (see errmsg[] above).
*
*       NOTE:  Add code to support memory regions.
*
*Uses:
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _heapchk (void)
{
    int retcode = _HEAPOK;

    _mlock(_HEAP_LOCK);
    if ( __sbh_heap_check() < 0 )
        retcode = _HEAPBADNODE;
    _munlock(_HEAP_LOCK);

    if (!HeapValidate(_crtheap, 0, NULL))
    {
        if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
        {
            _doserrno = ERROR_CALL_NOT_IMPLEMENTED;
            errno = ENOSYS;
        }
        else
            retcode = _HEAPBADNODE;
    }
    return retcode;
}

/* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */

int __cdecl _heapset (
        unsigned int _fill
        )
{
        return _heapchk();
}



#else  /* WINHEAP */


#include <cruntime.h>
#include <heap.h>
#include <malloc.h>
#include <mtdll.h>
#include <stddef.h>
#include <string.h>

static int __cdecl _heap_checkset(unsigned int _fill);

/* Debug error values */
#define _EMPTYHEAP   0
#define _BADROVER    1
#define _BADRANGE    2
#define _BADSENTINEL 3
#define _BADEMPTY    4
#define _EMPTYLOOP   5
#define _BADFREE     6
#define _BADORDER    7


#define _PRINTERR(msg)



/***
*int _heapchk()      - Validate the heap
*int _heapset(_fill) - Validate the heap and fill in free entries
*
*Purpose:
*   Performs a consistency check on the heap.
*
*Entry:
*   For heapchk()
*       No arguments
*   For heapset()
*       int _fill - value to be used as filler in free entries
*
*Exit:
*   Returns one of the following values:
*
*       _HEAPOK          - completed okay
*       _HEAPEMPTY       - heap not initialized
*       _HEAPBADBEGIN    - can't find initial header info
*       _HEAPBADNODE     - malformed node somewhere
*
*   Debug version prints out a diagnostic message if an error is found
*   (see errmsg[] above).
*
*   NOTE:  Add code to support memory regions.
*
*Uses:
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _heapchk(void)
{
    return(_heap_checkset((unsigned int)_HEAP_NOFILL));
}


int __cdecl _heapset (
    unsigned int _fill
    )
{
    return(_heap_checkset(_fill));
}


/***
*static int _heap_checkset(_fill) - check the heap and fill in the
*   free entries
*
*Purpose:
*   Workhorse routine for both _heapchk() and _heapset().
*
*Entry:
*   int _fill - either _HEAP_NOFILL or a value to be used as filler in
*              free entries
*
*Exit:
*   See description of _heapchk()/_heapset()
*
*******************************************************************************/

static int __cdecl _heap_checkset (
    unsigned int _fill
    )
{
    REG1 _PBLKDESC pdesc;
    REG2 _PBLKDESC pnext;
    int roverfound=0;
    int retval = _HEAPOK;

    /*
     * lock the heap
     */

    _mlock(_HEAP_LOCK);

    /*
     * Validate the sentinel
     */

    if (_heap_desc.sentinel.pnextdesc != NULL) {
        _PRINTERR(_BADSENTINEL);
        retval = _HEAPBADNODE;
        goto done;
    }

    /*
     * Test for an empty heap
     */

    if ( (_heap_desc.pfirstdesc == &_heap_desc.sentinel) &&
         (_heap_desc.proverdesc == &_heap_desc.sentinel) ) {
        retval = _HEAPEMPTY;
        goto done;
    }

    /*
     * Get and validate the first descriptor
     */

    if ((pdesc = _heap_desc.pfirstdesc) == NULL) {
        _PRINTERR(_EMPTYHEAP);
        retval = _HEAPBADBEGIN;
        goto done;
    }

    /*
     * Walk the heap descriptor list
     */

    while (pdesc != &_heap_desc.sentinel) {

        /*
         * Make sure address for this entry is in range.
         */

        if ( (_ADDRESS(pdesc) < _ADDRESS(_heap_desc.pfirstdesc)) ||
             (_ADDRESS(pdesc) > _heap_desc.sentinel.pblock) ) {
            _PRINTERR(_BADRANGE);
            retval = _HEAPBADNODE;
            goto done;
        }

        pnext = pdesc->pnextdesc;

        /*
         * Make sure the blocks corresponding to pdesc and pnext are
         * in proper order.
         */

        if ( _ADDRESS(pdesc) >= _ADDRESS(pnext) ) {
            _PRINTERR(_BADORDER);
            retval = _HEAPBADNODE;
            goto done;
        }

        /*
         * Check the backpointer.
         */

        if (_IS_INUSE(pdesc) || _IS_FREE(pdesc)) {

            if (!_CHECK_PDESC(pdesc)) {
                retval = _HEAPBADPTR;
                goto done;
            }
        }

        /*
         * Check for proverdesc
         */

        if (pdesc == _heap_desc.proverdesc)
            roverfound++;

        /*
         * If it is free, fill it in if appropriate
         */

        if ( _IS_FREE(pdesc) && (_fill != _HEAP_NOFILL) )
            memset( (void *)((unsigned)_ADDRESS(pdesc)+_HDRSIZE),
            _fill, _BLKSIZE(pdesc) );

        /*
         * Onto the next block
         */

        pdesc = pnext;
    }

    /*
     * Make sure we found 1 and only 1 rover
     */

    if (_heap_desc.proverdesc == &_heap_desc.sentinel)
        roverfound++;

    if (roverfound != 1) {
        _PRINTERR(_BADROVER);
        retval = _HEAPBADBEGIN;
        goto done;
    }

    /*
     * Walk the empty list.  We can't really compare values against
     * anything but we may loop forever or may cause a fault.
     */

    pdesc = _heap_desc.emptylist;

    while (pdesc != NULL) {


        pnext = pdesc->pnextdesc;

        /*
         * Header should only appear once
         */

        if (pnext == _heap_desc.emptylist) {
            _PRINTERR(_EMPTYLOOP)
            retval = _HEAPBADPTR;
            goto done;
        }

        pdesc = pnext;

    }


    /*
     * Common return
     */

done:
    /*
     * release the heap lock
     */

    _munlock(_HEAP_LOCK);

    return(retval);

}


#endif  /* WINHEAP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲精品国产精品紫薇| 91精品一区二区三区久久久久久 | 成人h动漫精品一区二区| 秋霞成人午夜伦在线观看| 一区二区三区高清在线| 亚洲欧美日韩国产中文在线| 国产日产精品1区| 国产精品家庭影院| 国产精品伦一区二区三级视频| 国产精品毛片久久久久久久| 国产精品色一区二区三区| 国产精品嫩草99a| 国产精品美女久久久久久久网站| 日本一区二区三区久久久久久久久不| 久久久国产一区二区三区四区小说| 亚洲永久免费av| 香蕉久久一区二区不卡无毒影院| 午夜精品一区二区三区三上悠亚| 日本麻豆一区二区三区视频| 狠狠色综合日日| 成人av网站免费观看| 欧美性色黄大片手机版| 欧美裸体一区二区三区| 久久精品男人天堂av| 中文字幕一区二区三区在线不卡 | 成人福利电影精品一区二区在线观看| 成人免费高清在线观看| 色综合久久综合中文综合网| 欧美丰满嫩嫩电影| 国产亚洲成aⅴ人片在线观看| 国产精品久久久久一区| 亚洲成av人影院| 国产在线播放一区| 色老头久久综合| 欧美sm美女调教| 亚洲综合色丁香婷婷六月图片| 青青国产91久久久久久 | k8久久久一区二区三区| 色婷婷精品久久二区二区蜜臂av| 337p亚洲精品色噜噜| 国产婷婷一区二区| 亚洲一区二区中文在线| 国产成人亚洲综合a∨婷婷| 一本一道久久a久久精品| 欧美大胆一级视频| 免费成人结看片| caoporm超碰国产精品| 欧美一区二区三区性视频| 久久久99久久| 青青草精品视频| 色欧美乱欧美15图片| 久久久久97国产精华液好用吗| 一二三四社区欧美黄| 从欧美一区二区三区| 日韩视频不卡中文| 亚洲高清在线精品| 99re热这里只有精品免费视频| 亚洲精品一区二区三区精华液| 亚洲影院在线观看| 91麻豆福利精品推荐| 亚洲国产精品成人综合| 国产尤物一区二区在线| 91精品国产欧美一区二区| 亚洲大片在线观看| 91福利视频在线| 日韩美女精品在线| 成人白浆超碰人人人人| 国产亚洲精品7777| 国产精品影音先锋| 久久影院电视剧免费观看| 老汉av免费一区二区三区| 91精品国产日韩91久久久久久| 三级欧美韩日大片在线看| 欧美在线一二三| 亚洲美女屁股眼交| 91久久免费观看| 夜夜嗨av一区二区三区| 日本电影欧美片| 日韩美女视频一区| 色婷婷久久久亚洲一区二区三区 | 国产99久久久精品| 久久久久久一级片| 国产精品911| 国产精品国产成人国产三级| 99久久99久久综合| 国产精品传媒入口麻豆| 色婷婷精品大在线视频| 亚洲国产另类av| 日韩一区二区中文字幕| 另类小说一区二区三区| 国产亚洲欧美中文| 91麻豆swag| 性欧美疯狂xxxxbbbb| 制服丝袜激情欧洲亚洲| 国产一区二区三区在线观看免费 | 美女视频黄a大片欧美| 久久亚洲精华国产精华液| 国产xxx精品视频大全| 中文字幕永久在线不卡| 欧美在线高清视频| 久久99久久久久| 国产精品乱人伦中文| 欧美在线啊v一区| 精品在线播放免费| 亚洲天堂福利av| 欧美一区午夜视频在线观看| 国产成人高清在线| 亚洲精品成人在线| 精品国产露脸精彩对白| 91小视频在线免费看| 日韩中文字幕1| 久久久久久97三级| 欧美伊人久久久久久久久影院| 老司机免费视频一区二区| 中文字幕一区二区三区视频| 欧美精品免费视频| av激情成人网| 久久成人麻豆午夜电影| 亚洲裸体在线观看| 久久嫩草精品久久久精品一| 欧美性色黄大片| 风间由美中文字幕在线看视频国产欧美 | 亚洲三级在线免费| 日韩一二三四区| 99久久久国产精品免费蜜臀| 美女视频黄免费的久久| 亚洲图片一区二区| 国产精品久久久久aaaa| 精品欧美乱码久久久久久1区2区| 日本久久一区二区| 成人av片在线观看| 国产精品夜夜嗨| 美女高潮久久久| 日日摸夜夜添夜夜添精品视频 | 视频一区二区中文字幕| 国产欧美1区2区3区| 欧美一级高清片在线观看| 色综合亚洲欧洲| 成人aa视频在线观看| 国产激情视频一区二区在线观看| 免费观看一级欧美片| 奇米精品一区二区三区四区| 亚洲成人黄色影院| 亚洲一区二区三区在线播放| 亚洲精品成人a在线观看| 椎名由奈av一区二区三区| 亚洲欧洲av另类| 国产精品久久久久久久久久免费看| 精品成人a区在线观看| 精品国产区一区| 精品99一区二区| 国产欧美日韩在线看| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩亚洲国产中文字幕欧美| 欧美一区二区三区四区视频| 欧美日本一道本| 91麻豆精品91久久久久同性| 欧美精品久久天天躁| 欧美精选在线播放| 日韩欧美激情在线| 精品久久久久久久久久久久久久久久久| 91精品国产综合久久福利| 日韩一区二区视频在线观看| 精品sm捆绑视频| 久久午夜老司机| 日本一区二区高清| 亚洲日本在线视频观看| 亚洲一区二区三区四区在线免费观看 | 7777精品伊人久久久大香线蕉的 | 成人av电影免费在线播放| 成人丝袜18视频在线观看| 99热国产精品| 欧美日本国产视频| 日韩精品中文字幕一区二区三区| 精品久久久影院| 亚洲欧洲美洲综合色网| 亚洲影视资源网| 狂野欧美性猛交blacked| 丁香网亚洲国际| 欧美在线你懂的| 欧美大片在线观看一区二区| 国产欧美一区二区在线观看| 最近日韩中文字幕| 亚洲超碰精品一区二区| 久久精品国产99国产精品| 99久久婷婷国产综合精品电影| 欧美最猛黑人xxxxx猛交| 精品电影一区二区| 一二三区精品福利视频| 韩国欧美国产1区| 91日韩精品一区| 日韩视频免费观看高清在线视频| 中文字幕一区二区三区不卡| 秋霞影院一区二区| 成人av资源在线| 欧美精品一区二区在线播放 | 五月激情综合色| av一区二区久久| 欧美成人video| 亚洲精品视频免费看|