关于在数据包封装结构体,我们在传输时传输的是结构体指针,注意结构体指针在临时变量中定义,如果用到结构体指针的话一定要给结构体指针分配内存空间: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()函数对结构体字段操作后,不管后面有没有销毁包一定要释放内存。