结构体free内存后会死机,想不通,想请教下是哪里的问题呢?谢谢!
程序代码:
在uart.h中定义Packct_Evt_t结构体 typedef struct { UINT8 head1; UINT8 cmd; UINT16 payload_len; UINT8 *payload; } Packct_Evt_t; 在pack.c中声明*Packct_Evt指针 Packct_Evt_t *Packct_Evt =NULL; int UartCmdPost(uint8_t *data)、int PackctFree(Packct_Evt_t *ptr)//在pack.c里面。 /*释放内存*/ int PackctFree(Packct_Evt_t *ptr) //在pack.c里面 { if (NULL == ptr) { return -1; } free(ptr->payload); free(ptr); ptr->payload = NULL; ptr = NULL; return 0; } int UartCmdPost(uint8_t *data) { Packct_Evt = (Packct_Evt_t*)malloc(sizeof(Packct_Evt_t)); if (NULL == Packct_Evt){ return -1; } uint16_t len = data[1]; Packct_Evt->payload = (UINT8*)malloc(sizeof(UINT8)*len); if (NULL == Packct_Evt->payload){ return -1; } Packct_Evt->head1 = data[0]; Packct_Evt->payload_len = data[1]; Packct_Evt->cmd = data[2]; Packct_Evt->payload = data+3; Cmd_Process(Packct_Evt); //Cmd_Process函数原型在process.c里面 return 0; } 在pack.h中extern int PackctFree(Packct_Evt_t *ptr),然后让process.c里面调用 Cmd_Process在process.c里面 void Cmd_Process(Packct_Evt_t *recevice) { /*这里做数据解析*/ ...... /*释放内存*/ PackctFree(recevice); }