Cocoa 提供了它称为 Memory Zones 的页对齐内存区域。 ,并提供了一些以区域为参数的内存管理函数。
假设您需要分配一 block 内存(不是为对象,而是为任意数据)。如果您调用malloc(size)
,缓冲区将始终分配在默认区域中。然而,有人可能用过allocWithZone:
将对象分配到默认区域之外的另一个区域中。在这种情况下,使用 NSZoneMalloc([self zone], size)
似乎会更好。 ,这将使您的缓冲区和拥有的对象保持在同一内存区域中。
你遵循这种做法吗?您使用过内存区域吗?
更新:我认为 Stack Overflow 上有一种倾向,通过有关过早优化的讲座来回答有关低级主题的问题。我知道 1993 年 NeXT 硬件上的区域可能比今天更重要,而且 Google 搜索很清楚地表明几乎没有人关心它们。无论如何,我想看看是否有人可以描述一个使用内存区域的项目。
最佳答案
我为 Linux 上的 NeXTStep、GNUstep 和 Mac OS X 上的 Cocoa 编写了软件,并且从未需要使用自定义内存区域。表明它是对软件的良好改进的条件要么从未出现过,要么从未被检测到具有重要意义。
关于cocoa - 你曾经使用过 NSZoneMalloc() 而不是 malloc() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/593241/