最后查到由于使用了 sdp_message_a_attribute_add(sdp, 0, "sendonly", NULL);
在释放时出现问题,原来是由于sdp_message_t 的信息需要动态分配的信息,所以可以使用下面两种办法:
第一种,osip_strdup分配空间:
sdp_message_a_attribute_add(sdp, 0, osip_strdup("sendonly"), NULL);//osip_strdup会分配空间//osip_strdup源码char *osip_strdup(const char *ch) { char *copy; size_t length; if (ch == NULL) return NULL; length = strlen(ch); copy = (char *) osip_malloc(length + 1); if (copy == NULL) return NULL; osip_strncpy(copy, ch, length); return copy;}
第二种,自己分配空间:
int size = strlen("sendonly"); char * send = (char *)osip_malloc(size+1); memcpy(send,"sendonly",size); ret = sdp_message_a_attribute_add (sdp, 0, send, NULL);
2. 错误 LNK2001 无法解析的外部符号 _osip_free_func更改CMakeList.txt
备注: 添加到sdp_message_t 的信息 需要动态分配的信息 因为 sdp_message_free 会释放
测试收发性能
条件:发送300条相机信息,分30次,连续发送
结果:接收端全部接到
姓名:
年龄:
电话: