libevent 源码分析:数据缓冲结构 evbuffer
💡
原文中文,约400字,阅读约需1分钟。
📝
内容提要
缓冲区的实现依赖于频繁的内存申请和释放。为减少这些操作,通常一次性申请一整块内存,包括缓存头和数据数组。在C语言中,结构体LenStr的内存申请需考虑结构体和数据的总大小,buf[0]技巧需放在结构体最后。
🎯
关键要点
- 缓冲区的实现依赖于频繁的内存申请和释放。
- 为了减少内存申请和释放次数,通常一次性申请一整块内存。
- 缓存头部和数据数组都放在同一块缓冲区里。
- 定义带长度的字符串结构体时,结构体LenStr包含长度、容量和数据数组。
- 申请内存时需要考虑结构体和数据的总大小。
- buf[0]技巧需放在结构体最后,申请后buf[n]表示第n个数据。
- C语言初学者可能对buf[0]感到困惑,C11默认不允许这种写法。
➡️