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