【发布时间】:2009-08-26 12:21:46
【问题描述】:
在我的应用程序中,我正在尝试处理来自网络摄像头的 YUV422 图像。但我遇到了巨大的内存泄漏。下面你可以看到我的应用程序的简化代码示例。如果我禁用函数中的“(m1...”行,则没有泄漏。(但图像没有被处理)。我尝试了锁、池等,但没有任何改变。我是可可相对较新,所以所有这些方括号对我来说看起来很有趣/很可怕;-)
使用“char”有问题吗?在我的旧 linux+c++ 应用程序中没有问题。但我使用的是“unsigned char*”,没有线程,而且我从未检查过泄漏...
全局:
...
char m [640*480];
“主要”:
...
[NSThread detachNewThreadSelector:@selector(processOutputBuffer) toTarget:self withObject:nil];
...
函数1:
- (void)processOutputBuffer {
[NSThread setThreadPriority:0.4];
[lock lock];
...
Ptr outputBufferBaseAddress = (Ptr)CVPixelBufferGetBaseAddress(outputBuffer);
CVPixelBufferLockBaseAddress(outputBuffer, 0);
[self yuv422_to_y8uv8:outputBufferBaseAddress m1:m];
...
}
函数2:
- (void) yuv422_to_y8uv8:(char *)image m1:(char *)m1 {
int x,y;
for (y = 0; y < 480; y++)
for (x = 0; x < 640; x++)
{
*(m1 + (640 * y) + (x))=*(image + (640*2 * y) + (x*2)+1);
}
}
【问题讨论】:
标签: cocoa image-processing memory-leaks