【发布时间】:2011-04-20 00:55:36
【问题描述】:
我是第一次使用 Objective C 程序员。我一直在阅读其他人的代码,并且经常看到创建了静态字符串但从未发布过。以此为例:
- (UITableViewCell*)tableView:(UITableView*)tableView
cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
static NSSSTring* foo = @"foo";
// [code to return a cell for the table]
}
据我了解,堆中 3 个字符的空间已分配用于存储字符串“foo”。当程序终止时,这三个字符永远不会被回收,因为作者从未释放它们。这里不是内存泄漏吗?为什么或为什么不?
【问题讨论】:
-
看看我不久前提出的这个问题。 stackoverflow.com/questions/4436016/…
-
请注意:当程序终止时,相应进程分配的所有内存都被操作系统回收。无论对象是静态字符串还是堆分配对象,都不会在终止时发生内存泄漏。
标签: objective-c cocoa-touch memory-management