我有这个init方法来初始化队列,我使用了malloc。我的问题是如果malloc使用得很好,如果我必须使用免费的,因为我有一个malloc,哪里?
void e1_init(e1queue_t* q){
q->head = 0;
q->tail = sizeof(q->queue)/sizeof(int)-1;
q=(e1queue_t*) malloc( sizeof(e1queue_t));
q->size=0;
}
感谢。
答案 0 :(得分:1)
我认为代码不会按照您的想法执行。一旦该函数返回,您就丢失了指向已分配内存的指针。 q
仅在函数范围内修改。 (说实话,整个函数有点荒谬。使用它将非常奇怪。)
无论如何,要回答您的问题,您将拥有匹配的e1_destroy
或e1_free
方法,该方法负责正确清理结构的内容。