初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2019-12-3
- 在线时间
- 8 小时
|
1金钱
LWIP中的pbuf->payload的值更改后,最后在释放这个pbuf时,最初申请这个pbuf时给分配的地址所在内存会被释放吗
如下代码,申请pbuf内存(ptr),成功后的 ptr->payload已经给分配好了,但是代码下一步直接把 ptr->payload指向了另一处,最后在释放ptr的时候,最初申请的那部分(ptr->payload)内存会被释放吗
之所以我会有这个疑问,我是这么理解的:pbuf_alloc申请pbuf的时候,分配pbuf链表,并且将每个pbuf表中的 pbuf->payload(也就是保存数据的那部分)的内存保护起来,再申请pbuf的时候,不会指向到pbuf->payload这里,最后pbuf_free释放pbuf的时候,根据pbuf->payload和pbuf->len将这部分内存再释放掉,不知道我理解的对不对。
struct pbuf *ptr;
ptr=pbuf_alloc(PBUF_TRANSPORT,strlen((char*)tcp_demo_sendbuf),PBUF_POOL); //申请内存
if(ptr)
{
ptr->payload=(void*)tcp_demo_sendbuf;
udp_send(upcb,ptr); //udp发送数据
pbuf_free(ptr);//释放内存
}
|
|