我的嵌入式应用程序使用LwIP库发送不同长度的UDP消息,具体取决于内容。
现在,每次消息需要使用PBUF_RAM发送时,我都会调用pbuf_alloc / pbuf_free。它似乎工作得很好,但我担心它会在很长一段时间内运行后会导致内存碎片的肮脏。我应该担心吗?
此外,PBUF_POOL是否仅用于接收 消息,而不是用于发送消息?
答案 0 :(得分:0)
PBUF_POOL仅用于RX,其目的是为接收的数据包和缓冲的TX段分隔内存池。有关文档
,请参阅PBUF_POOL define就PBUF_RAM和内存堆中的碎片而言,有许多配置决定了堆的实现方式,这可能会影响碎片。所以你需要了解你的配置。
堆可以通过标准C库malloc,一系列各种固定大小的池或单个静态数组来实现。如果使用后者,则从mem_free()调用plug_holes(),它应该处理片段。见mem.c