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];

现在dashLengths是一个自动变量。无需内存管理。

于 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 回答