libevent 源码分析:数据缓冲结构 evbuffer

💡 原文中文,约400字,阅读约需1分钟。
📝

内容提要

缓冲区的实现依赖于频繁的内存申请和释放。为减少这些操作,通常一次性申请一整块内存,包括缓存头和数据数组。在C语言中,结构体LenStr的内存申请需考虑结构体和数据的总大小,buf[0]技巧需放在结构体最后。

🎯

关键要点

  • 缓冲区的实现依赖于频繁的内存申请和释放。
  • 为了减少内存申请和释放次数,通常一次性申请一整块内存。
  • 缓存头部和数据数组都放在同一块缓冲区里。
  • 定义带长度的字符串结构体时,结构体LenStr包含长度、容量和数据数组。
  • 申请内存时需要考虑结构体和数据的总大小。
  • buf[0]技巧需放在结构体最后,申请后buf[n]表示第n个数据。
  • C语言初学者可能对buf[0]感到困惑,C11默认不允许这种写法。
➡️

继续阅读