0

重複の可能性:
Free()関数はどこで呼び出す必要がありますか?

キューを初期化するためのこの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;  
    }

ありがとう。

4

1 に答える 1

1

私は、そのコードがあなたが思っていることをしているとは思いません。その関数が戻ると、割り当てられたメモリへのポインタが失われます。 q関数のスコープ内でのみ変更されます。(正直に言うと、関数全体は少し無意味です。それを使用するのは非常に奇妙です。)

とにかく、あなたの質問に答えるために、あなたは構造体の内容を適切にクリーンアップする責任があるマッチングe1_destroyまたはメソッドを持っているでしょう。e1_free

于 2012-10-20T07:58:25.323 に答える