Guard Malloc立即发现EXC_BAD_ACCESS错误.为什么不一直使用?

bro*_*ney 6 iphone malloc exc-bad-access guard

我几天来一直在调试臭名昭着的EXC_BAD_ACCESS错误.NSZombieEnabled = YES没有提供任何东西.每次收到错误时,调用堆栈都不同,每隔5或6次运行一次.

我在Lou Franco的网站上看到了启用guard malloc(现在是Xcode 4的方案编辑器)的提示:了解EXC_BAD_ACCESS.一旦我这样做,我的程序就停止了导致这个难以捉摸的错误的确切行.

根据其描述,guard malloc为每个malloc创建单独的页面,并在释放内存时删除整个页面,从而在访问释放的内存时使程序崩溃.对于一般的开发,为什么我不能一直保持对malloc的保护?它似乎很容易捕获某些类型的内存错误.如果我没有专门测试内存管理或性能,那么使用它有一些缺点吗?

lxt*_*lxt 7

它不仅浪费地址空间,而且会显着减慢程序的速度(可能会使它无法使用,即使在模拟器上也是如此).我想对于一个iOS程序,当你在模拟器上运行时,它有点没有意义(内存不是问题,性能也不是很糟糕),但也许以最佳实践的名义你不应该经常运行它.