关于Enable Guard Malloc,苹果官方解释是:Use libgmalloc to catch common memory problems such as buffer overruns and use-after-free.
大致意思是:使用libgmalloc来捕获缓存区溢出和访问已经被释放掉的内存等常见的内存问题。
这个是等同于默认malloc库功能的另外一个调试库,为了定位大内存越界访问问题。
使用环境:只能在模拟器上使用,若在真机上运行,会直接报错。
在模拟器上运行,打开Enable Guard Malloc,控制台通常会打印下列信息:
通过这些文本记录,我们可以获取到以下信息:
1.配置将被放置在16字节边界。
2.一些缓冲区溢出可能不会注意到。
3.可以使用向量指令(例如:SSE)。
Enable Guard Malloc的具体作用及实例:
作用:能够帮我们定位到内存越界访问问题。
实例:
这段代码,很明显有内存访问越界问题,但当我们没有打开Enable Guard Malloc时,运行并不会报错。
打开Enable Guard Malloc,程序能直接定位到引起崩溃的代码行。
所以,当我们使用模拟器来运行程序时,该功能能帮我们捕获到大部分的内存错误。
代价:程序运行的成本由于缓存效率更慢。
使用方式:点击工程,Edit Scheme->Run