2009-08-19 20 views
6

簡単な質問 - 私は構造体を解放する必要がありますか?尋ねる私の理由は、私はNSInvocationを使用しており、SEL型は構造体です。私がそれを解放する必要があるかどうかだけを知りたい。ありがとう。目的C構造体とメモリの管理

答えて

14

Objective-CとCでは、一般的に、メモリ内のどこかへのポインタではなく、すべてがスタックに割り当てられている場合、解放する必要はありません。スタックポインタが関数の終わりに調整されるとすぐに解放されます。

2

Objective-CはCと違いはありません。malloc()なら、それはfree()です(ある時点で)。

4

SELは不透明な型として扱われるべきである(これは32ビットのランタイム上char *だ)と、ほぼすべての使用は、静的インスタンス(@selector())または「一時的な」変数(NSSelectorFromString())となります、ので、解放する必要がありますどちらもあなたはそれを割り当てなかった。

+0

'char *'は実装の詳細です。 Objective-C実装は、単純な整数またはそれが好む任意のメカニズムで内部的に実装することを選択できます。 –

+1

だから、私はそれが不透明なタイプだと言ったのです。構造体でないときの例として 'char *'を使用しました。 –