Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Xcode 4.2和iOS 5中的内存泄漏_Objective C_Memory Leaks_Xcode4.2 - Fatal编程技术网

Objective c Xcode 4.2和iOS 5中的内存泄漏

Objective c Xcode 4.2和iOS 5中的内存泄漏,objective-c,memory-leaks,xcode4.2,Objective C,Memory Leaks,Xcode4.2,我使用xcode 4.2,这使用ARC(自动参考计数) 这不是内存泄漏,因为ARC发送“释放”消息: NSNumber *xy = [[NSNumber alloc] init]; 但有可能通过以下方式造成内存泄漏: char *oldString = "Old String"; char newStrig = strdup(oldString); 我想知道还有其他类型的内存泄漏吗? (如果可以不使用C或C++)ARC只能在您使用Objective-C内存分配时工作,因为它专门与此相关。事

我使用xcode 4.2,这使用ARC(自动参考计数)


这不是内存泄漏,因为ARC发送“释放”消息:

NSNumber *xy = [[NSNumber alloc] init];
但有可能通过以下方式造成内存泄漏:

char *oldString = "Old String";
char newStrig = strdup(oldString);
我想知道还有其他类型的内存泄漏吗?
(如果可以不使用C或C++)ARC只能在您使用Objective-C内存分配时工作,因为它专门与此相关。事实上,当您使用ARC时,编译器会尽最大努力将每个alloc与一个发行版相匹配(它甚至不能保证这一点)


如果您使用的是Objective-C分配以外的任何其他方法,那么您又可以自己操作了。ARC不会处理这个问题。

ARC只能在您使用Objective-C内存分配时工作,因为它只与Objective-C内存分配相关。事实上,当您使用ARC时,编译器会尽最大努力将每个alloc与一个发行版相匹配(它甚至不能保证这一点)


如果您使用的是Objective-C分配以外的任何其他方法,那么您又可以自己操作了。ARC无法处理此问题。

ARC仅适用于Cocoa内存管理。如果您正在Cocoa和CoreFoundation之间为toll free bridge对象进行强制转换,则有宏用于传输内存管理

<>你可以在C中泄漏内存,你可以泄漏核心基础内存,静态分析器有助于找到那些。 ARC并没有完全取消内存管理。它消除了对COCOA对象的内存管理的需要,并且在某些情况下(因为它可以优化一些代码< >保留< /COD> <代码>发布< /COD>调用)在管理内存方面更有效,但您仍然需要了解核心基础对象和C内存的内存管理。 您还需要了解Cocoa内存管理,以了解何时使用
strong
weak
copy
属性,以及何时在块上使用
Block\u copy()
Block\u release()
,即使块是Cocoa对象,并且在大多数情况下,使用ARC可以为您处理正确的内存管理


再次ARC不会取消内存管理。它简化了它,并减少了您必须编写的代码量,但您仍然需要了解在幕后为您做了什么,以及何时需要管理自己的内存。

ARC仅适用于Cocoa内存管理。如果您正在Cocoa和CoreFoundation之间为toll free bridge对象进行强制转换,则有宏用于传输内存管理

<>你可以在C中泄漏内存,你可以泄漏核心基础内存,静态分析器有助于找到那些。 ARC并没有完全取消内存管理。它消除了对COCOA对象的内存管理的需要,并且在某些情况下(因为它可以优化一些代码< >保留< /COD> <代码>发布< /COD>调用)在管理内存方面更有效,但您仍然需要了解核心基础对象和C内存的内存管理。 您还需要了解Cocoa内存管理,以了解何时使用
strong
weak
copy
属性,以及何时在块上使用
Block\u copy()
Block\u release()
,即使块是Cocoa对象,并且在大多数情况下,使用ARC可以为您处理正确的内存管理

再次ARC不会取消内存管理。它简化了它,减少了您必须编写的代码量,但您仍然需要了解在幕后为您做了什么,以及何时需要管理自己的内存