Sim*_*ide 0 iphone malloc memory-leaks memory-management
我有一个C++类,我在我的iPhone应用程序中使用我的Objective-C++控制器.C++类对某些数据进行一些计算,返回结果,然后完成 - 但它会像疯了一样泄漏.我想知道我是否能够以某种方式利用Memory Zones(又名malloc区域又名allocWithZone)来解决这个问题.我的想法是将ObjC++对象分配到一个新区域,然后以某种方式让C++对象全部在这个新区域中自动创建.然后,当它返回时,我杀死该区域,并且所有内存将自动恢复,即使它已被泄露.
但是:文档似乎表明我是否在新区域X中分配了一个对象,它分配的对象也不会自动也在区域X中.如果这有意义,是否有人知道如何覆盖该行为以便所有后续的分配和该对象的mallocs将在新区X中?
编辑:
我应该注意,该线程将主要运行C++代码,一个庞大的代码库,并且此时杀死它中的所有泄漏并不经济,因为它自动从Java转换而且像疯了一样泄漏(重构)需要...).感谢"只是修复你的漏洞"的建议,但目前这并不实用.
内存不会通过ObjC分配泄露,但主要是通过C++数组新调用(也有几个直接的malloc).如果这有所作为.
最初,Objective-C中的区域旨在使开发人员能够在区域中分配一堆相关对象,然后将它们全部释放,而无需单独释放每个实例.
在实践中,这被证明是不切实际的.特别是一旦从Object转到NSObject(从NeXTSTEP到OpenStep).
实际情况是,应用程序中的对象图通常足够复杂,以至于子图的总区域隔离几乎是不可能的.特别是,您无法直接或间接地从Apple的框架中分配任何对象并保留对它们的引用,因为您无法控制所述对象的基于区域的分配.
所以,不,不要那样做.修复你的泄漏.没有神奇的子弹/机制可以避免让你的代码真正起作用.