⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hp.c

📁 分析C程序中的词法,如是否为关键字或变量等.
💻 C
字号:
#include "hprof.h"static intreal_size(int alignment, int nbytes){    if ( alignment > 1 ) {	int wasted;	wasted = alignment - ( nbytes % alignment );	if ( wasted != alignment ) {	    nbytes += wasted;	}    }    return nbytes;}static voidadd_block(Blocks *blocks, int nbytes){    int header_size;    int block_size;    BlockHeader *block_header;    HPROF_ASSERT(blocks!=NULL);    HPROF_ASSERT(nbytes>0);    header_size= real_size(blocks->alignment, sizeof(BlockHeader));    block_size= blocks->elem_size*blocks->population;    if ( nbytes > block_size ) {	block_size = real_size(blocks->alignment, nbytes);    }    block_header         = (BlockHeader*)HPROF_MALLOC(block_size+header_size);    block_header->next   = NULL;    block_header->bytes_left = block_size;    block_header->next_pos   = header_size;       /* Link in new block */    if ( blocks->current_block != NULL ) {        blocks->current_block->next = block_header;    }    blocks->current_block = block_header;    if ( blocks->first_block == NULL ) {        blocks->first_block = block_header;    }}Blocks *blocks_init(int alignment, int elem_size, int population){    Blocks *blocks;    HPROF_ASSERT(alignment>0);    HPROF_ASSERT(elem_size>0);    HPROF_ASSERT(population>0);    blocks                = (Blocks*)HPROF_MALLOC(sizeof(Blocks));    blocks->alignment     = alignment;    blocks->elem_size     = elem_size;    blocks->population    = population;    blocks->first_block   = NULL;    blocks->current_block = NULL;    return blocks;}void *blocks_alloc(Blocks *blocks, int nbytes){    BlockHeader *block;    int   pos;    void *ptr;    HPROF_ASSERT(blocks!=NULL);    HPROF_ASSERT(nbytes>=0);    if ( nbytes == 0 ) {	return NULL;    }        block = blocks->current_block;    if ( block == NULL || block->bytes_left < nbytes ) {        add_block(blocks, nbytes);        block = blocks->current_block;    }    pos = block->next_pos;    nbytes = real_size(blocks->alignment, nbytes);    ptr = (void*)(((char*)block)+pos);    block->next_pos   += nbytes;    block->bytes_left -= nbytes;    return ptr;}/* Terminate the Blocks */voidblocks_term(Blocks *blocks){    BlockHeader *block;    HPROF_ASSERT(blocks!=NULL);        block = blocks->first_block;    while ( block != NULL ) {	BlockHeader *next_block;	next_block = block->next;	HPROF_FREE(block);	block = next_block;    }    HPROF_FREE(blocks);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -