类 NSCFNumber 自动释放,没有适当的池 - 只是泄漏
Posted
技术标签:
【中文标题】类 NSCFNumber 自动释放,没有适当的池 - 只是泄漏【英文标题】:class NSCFNumber autoreleased with no pool in place - just leaking 【发布时间】:2009-12-21 07:58:06 【问题描述】:我是 C++ 新手,刚刚开始使用线程处理项目。
目前我的项目涉及到OpenGL和OpenCV库,在编码过程中遇到如下错误:
当前语言:自动;目前c++ 2009-12-21 14:54:49.438 3DTestApp[3210:7803] *** _NSAutoreleaseNoPool(): NSCFNumber 类的对象 0x10ebe0 自动释放,没有适当的池 - 只是泄漏 堆栈:(0x91edff4f 0x91dec432 0x941ad394 0x94282218 0x94281b32 0x94528023 0x942813ef 0x94280dc6 0x94489ef4 0x944882ab 0x9350e13d 0x9350d57b 0x9350d3e0 0x93529e29 0x93529bce 0x935292a8 0x935290e4 0x5743e2) 杀 退出
我放了断点,发现错误是在下面这行执行后才出现的:
cvShowImage("运动追踪器", detectionMotionScreen); (这段代码在一个无限循环的线程中)
我google了一下,发现这个错误只发生在Objective C中,我没有找到与C++相关的结果。
因此,我想问一下是否有人知道为什么会发生这种情况,有没有办法解决它?
edit:我尝试添加框架 Foundation 以使用 NSAutoreleasePool,但是在编译时它会在我的代码中产生很多关于语法的错误,而实际上没有。
【问题讨论】:
【参考方案1】:Apple 在 IOKit 之外没有任何用 C++ 编写的公共接口,因此您找不到任何公共接口。关于 CoreFoundation 内存管理的过程 C 文档是 here。
如果您需要更具体的帮助,那么您需要更彻底地描述您正在做什么。
【讨论】:
您好,NSD,感谢您的回复。对于我的应用程序,它涉及在检测到的每个动作时画线。在我的主要方法中,我创建了一个线程,该线程在循环中运行一个方法,该方法检测来自相机的运动并在 IplImage 上绘制线条。然后通过在循环结束时调用 cvShowImage 将 IplImage 显示在屏幕上,然后再由外观顶部的 cvZero 清除它并再次执行运动检测代码。它使用的 IplImage 在类的开头声明为目标变量,并在 main 方法中初始化。以上是关于类 NSCFNumber 自动释放,没有适当的池 - 只是泄漏的主要内容,如果未能解决你的问题,请参考以下文章
*** __NSAutoreleaseNoPool():NSPathStore2 类的对象 0x926d620 自动释放,没有适当的池 - 只是泄漏