少し混乱します。いつ私は無料で電話しなければならないのですか?私は、コアオーディオを学習する短いコードスニペットに取り組んでいます。 UnsafeMutablePointer<Type>.alloc(size)
と呼ぶと、私は電話しなければならないと思った。destroy
& dealloc
。 しかし、malloc()
またはcalloc()
を使用すると、私はfree()
と呼ぶことになっています。ここでUnsafeMutablePointerを正しく処理する方法
var asbds = UnsafeMutablePointer<AudioStreamBasicDescription>.alloc(Int(infoSize))
audioErr = AudioFileGetGlobalInfo(kAudioFileGlobalInfo_AvailableStreamDescriptionsForFormat,
UInt32(sizeof(fileTypeAndFormat.dynamicType)), &fileTypeAndFormat,
&infoSize, asbds)
私はalloc
を使用します。この例では
学習のCore Audioから次のコードスニペットは、私を不思議になります。メモリを解放するにはfree
が呼び出されます。
free(asbds)
しかし、私はルールを次のよう期待する理由はない
asbds.destroy(Int(infoSize))
asbds.dealloc(Int(infoSize))
。
これは私の頭を回転させるので、私はどんな助けもありがとう。ドキュメンテーションには、私は破壊と破壊の責任を負っていると言われているので、その部分ははっきりしていますが、それはどのような意味ですか?
ありがとうございます。それはたくさんの助けになりました。私は配列のアプローチが本当に好きです。それは物事をより迅速にします。 しかし、私のために 'free()'部分をクリアするには。今は 'free'や' destroy'と 'dealloc'を呼び出すのに違いはありませんか?私はそれが正しいことを理解しましたか? 'alloc'はカーテンの後ろで' malloc'を呼び出しているからです。 – enovatia