免费在哪里使用它

时间:2012-10-20 07:56:07

标签: c

  

可能重复:
  Where should I call Free() function?

我有这个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;  
    }

感谢。

1 个答案:

答案 0 :(得分:1)

我认为代码不会按照您的想法执行。一旦该函数返回,您就丢失了指向已分配内存的指针。 q仅在函数范围内修改。 (说实话,整个函数有点荒谬。使用它将非常奇怪。)

无论如何,要回答您的问题,您将拥有匹配的e1_destroye1_free方法,该方法负责正确清理结构的内容。