0

NSBezierPath インスタンスに破線スタイルを設定しています:

NSBezierPath *path = [NSBezierPath path];
// Get the path information...

NSInteger count = 0;
// Get the array count...

CGFloat *dashLengths = (CGFloat *)malloc(sizeof(CGFloat) * count);
// Populate the array...

CGFloat phase = 0.0f;
// Get the phase...

[path setLineDash:dashLengths count:count phase:phase];

メモリ リークを防ぐために、dashLengths で free() を呼び出す必要がありますか? または、アレイを解放すると、後でエラーが発生しますか?

4

3 に答える 3

1

mallocそもそもなぜ使っているのですか?宣言するだけ

CGFloat dashLengths[count];

Now dashLengths is an automatic variable. No memory management required.

于 2013-02-19T16:49:13.253 に答える
0

いいえ、自分で配列する必要free()があります。malloc()

于 2013-02-19T16:42:27.167 に答える
0

パスを解放した直後に、dashLengths で free() を呼び出す必要があります。NSBezierPath にはそれを保持する方法がありません。これは単なる通常の ol ポインターであるため、NSBezierPath がなくなるまでそのメモリを削除しないでください。

于 2013-02-19T16:43:36.817 に答える