一开始没考虑结构体里的指针成员的malloc问题,结果就是内存泄漏,无法释放存入队列的结构体中的指针成员原先申请的空间;后来考虑在入队时为结构体的指针成员malloc空间再赋值,但是出队时会出现内存方面的错误,且无法free结构体中的指针成员
memcpy(e1->buff,p->data.buff,p->data.len)
这里你*e1 = p->data,那么e1->buff就是p->data->buff啊
memcpy没啥意义
最后free(p->data.buff)就把e1->buff指向的空间释放掉了,buff就成野指针啦
malloc sizeof(maxsize+1)?那不是只malloc了一个int的大小
感觉很累。你让*e=p->data,那么*e的值跟p->data一样了,包括他们里面的buff指针指向的地址都一样。所以你对e buff的操作就是直接对p data buff的操作一样。你的memcpy是多余的。然后你下面free了p data buff,那么e buff所指向的内存也一样就是被释放掉了,因为他们是同一段内存。