📄 balloc.c
字号:
#include "balloc.h"struct b_block *b_mem;struct b_block *b_first;struct b_block *_b_find_block(void *ptr){ struct b_block *block; block = b_first; while(block->mem != ptr && block!=NULL){ block = block->next; } if(block==NULL){ fprintf(stderr,"_b_find_block error: no such block\n"); exit(EXIT_FAILURE); } return block;}void *balloc(size_t mem){ static int first_call=1; struct b_block *temp; size_t size; if(first_call){ first_call = 0; b_first = (struct b_block*)malloc(sizeof(struct b_block)); b_first->next = NULL; b_first->prev = NULL; } else{ temp = b_first; b_first = (struct b_block*)malloc(sizeof(struct b_block)); b_first->next = temp; b_first->prev = NULL; temp->prev = b_first; } size = mem * 100; b_first->mem = (void*) malloc(size); b_first->block_size = size; return(b_first->mem);}void *bealloc(void *ptr, size_t mem){ struct b_block *block; block = _b_find_block(ptr); if(mem < block->block_size) return ptr; if(mem == 0){ free(ptr); if(block->next!=NULL) (block->next)->prev=block->prev; if(block==b_first) b_first=block->next; free(block); return NULL; } block->mem = realloc(ptr,(mem-block->block_size)*10+block->block_size); return block->mem;}void bfree(void *ptr){ if(ptr!=NULL) bealloc(ptr,0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -