0

可能重复:
我应该在哪里调用 Free() 函数?

我有这个初始化方法来初始化一个队列,我使用了一个 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;  
    }

谢谢。

4

1 回答 1

1

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

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

于 2012-10-20T07:58:25.323 回答