c语言中char buffer,C语言对char*的封装,形成buffer

/* --------------------------------------------------------------------------*/

/**

* @brief 初始化buffer,分配空间

*

* @Returns 返回buffer指针

*/

/* ----------------------------------------------------------------------------*/

buffer* buffer_init(void) {

buffer *b;

b = malloc(sizeof(*b));

assert(b);

b->ptr = NULL;

b->size = 0;

b->used = 0;

return b;

}

/* --------------------------------------------------------------------------*/

/**

* @brief 使用已有的buffer创建新的buffer

*

* @params src

*

* @Returns

*/

/* ----------------------------------------------------------------------------*/

buffer *buffer_init_buffer(buffer *src) {

buffer *b = buffer_init();

buffer_copy_string_buffer(b, src);

return b;

}

/* --------------------------------------------------------------------------*/

/**

* @brief 释放空间,首先释放其内部ptr,再释放本身

*

* @params b

*/

/* ----------------------------------------------------------------------------*/

void buffer_free(buffer *b) {

if (!b) return;

free(b->ptr);

free(b);

}

/* --------------------------------------------------------------------------*/

/**

* @brief 重置,如果当前开辟的空间过大,则将空间销毁,否则,将指针指为结束符`\0`

* 使用大小置为0

*

* @params b

*/

/* ----------------------------------------------------------------------------*/

#define BUFFER_MAX_REUSE_SIZE (4 *1024)

void buffer_reset(buffer *b) {

if (!b) return;

/* limit don't reuse buffer larger than ... bytes */

if (b->size > BUFFER_MAX_REUSE_SIZE) {

free(b->ptr);

b->ptr = NULL;

b->size = 0;

} else if (b->size) {

b->ptr[0] = '\0';

}

b->used = 0;

}

#define BUFFER_PIECE_SIZE 64

/* ---------------------

你可能感兴趣的:(c语言中char,buffer)