单片机/MCU论坛
直播中

马占云

7年用户 1549经验值
私信 关注

TC275有函数返回指针地址明明有地址返回值变成NULL是为什么?

函数原型:struct udp_PCB *udp_new(void){  struct udp_pcb *pcb;  LWIP_ASSERT_CORE_LOCKED();  pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB);  /* could allocate UDP PCB? */  if (pcb != NULL) {    /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0     * which means checksum is generated over the whole datagram per default     * (recommended as default by RFC 3828). */    /* initialize PCB to all zeroes */    memset(pcb, 0, sizeof(struct udp_pcb));    pcb->ttl = UDP_TTL;#if LWIP_MULTICAST_TX_OPTIONS    udp_set_multicast_ttl(pcb, UDP_TTL);#endif /* LWIP_MULTICAST_TX_OPTIONS */  }  logInfo("udp_new():pcb = %x",pcb);  return (pcb);}调用:    struct udp_pcb *udp;        udp = udp_new();udp 获取到的地址永远是NULL,但是单步或者是打印看pcb分配是成功的,有地址值;                                                                                                                                                                  

回帖(1)

刘兴欢

2024-2-6 14:16:39
只跑一个核看看还有没这个问题。如果没有问题,应该是多核并发导致的问题,需要检查宏LWIP_ASSERT_CORE_LOCKED()的实现(多核可以用自旋锁实现这个宏)。                 
举报

更多回帖

发帖
×
20
完善资料,
赚取积分