关于关于包中封装结构体的问题

本文详细阐述了在数据包传输过程中,如何正确使用结构体指针进行内存分配与释放,以及访问简单字段类型与复杂字段类型(如packet和structure)的不同策略。重点强调了在访问复杂字段类型后应释放内存的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于在数据包封装结构体,我们在传输时传输的是结构体指针,注意结构体指针在临时变量中定义,如果用到结构体指针的话一定要给结构体指针分配内存空间:rtu = (FB*)op_prg_mem_alloc(sizeof(FB)),用完后要记得释放内存空间:op_prg_mem_free(rtu)。如果在包中封装结构体时销毁包即自动释放内存空间,不用再对结构体指针另行操作。

再包传输的过程中,如果用op_pk_nfd_get()访问简单的字段类型,如int和double,直接将它们的值赋给参数,并不受该函数影响。而访问packet和structure字段类型,同样将它们的值赋给参数。然而,当访问这些值时,就将其从包中删除,其状态更改为“unset”,且不可通过函数op_pk_nfd_get()来进行访问,同时包的总大小也随之减小。所以如果我们还要用该字段时最好用op_pk_nfd_access_read_only_ptr ()函数。

如果用op_pk_nfd_get()函数对结构体字段操作后,不管后面有没有销毁包一定要释放内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值