几天来,我一直在调试臭名昭著的 EXC_BAD_ACCESS 错误。NSZombieEnabled = YES 没有提供任何东西。每次我收到错误时,调用堆栈都是不同的,每 5 或 6 次运行一次。
我在 Lou Franco 的网站上看到了启用保护 malloc 的提示(现在在 Xcode 4 的方案编辑器中):Understanding EXC_BAD_ACCESS。一旦我这样做了,我的程序就停在导致这个难以捉摸的错误的确切行上。
根据其描述,guard malloc 为每个 malloc 创建单独的页面,并在释放内存时删除整个页面,从而在访问释放的内存时使程序崩溃。对于一般开发,我为什么不一直保持警卫malloc?它似乎很容易捕捉到某些类型的内存错误。如果我没有专门测试内存管理或性能,使用它是否有一些缺点?