IOS经常会混合使用C代码,而在C中,对内存的读写是很频繁的操作。

其中,内存越界读写

    unsigned char* p =(unsigned char*)malloc(10);
unsigned char c = *(p+100) ;
free(p);

是一种很容易犯的错误,在大部分情况下,这段代码是不会暴露问题的。

如果越界写内存,比如:

    unsigned char* p =(unsigned char*)malloc(10);
*(p+100) ='c';
free(p);

比如:

    unsigned char* p =(unsigned char*)malloc(10);
UIViewController* vc =[UIViewController new];
*(p+100) = 'c' ;
[vc view];
free(p);

因为暴力修改了vc对象的内容,再对vc对象进行操作时,就会有异常发生。

在现实中,这类BUG往往隐藏的很深。因为越界修改的内存,可能属于一块未被使用的内存,或者属于一个不常被访问到的对象。对测试人员来说,就是应用会变的不稳定,在任何页面下,都有可能会挂,而且它们之间没有必然的联系。 就像在路上埋下了一颗地雷,任何人都有可能踩到这颗雷。

幸好XCode 提供了方法让我们纠出这类BUG。

1,在运行时,加入下面的选项:

这个方法只适用于模拟器。

如果是在真机上调试,就会报找不到镜相的错误。

2,此时执行上面的内存读写代码,都会直接定位到问题的代码。

IOS上解决内存越界访问问题的更多相关文章

  1. 图解IIS8上解决网站第一次访问慢的处理(转载)

    本篇经验以IIS8,Windows Server 2012R2做为案例.IIS8 运行在 Windows Server 2012 and Windows 8 版本以上的平台上.IIS中应用程序池和网站 ...

  2. 关于 Swift 4 中内存安全访问

    前言 本文主要翻译今年 The Swift Programming Language (Swift 4) 中新出的章节 -<Memory Safety>.在 Swift 4 中,内存安全访 ...

  3. 解决protobuf不能直接在IOS上使用,利用protobuf-net在IOS上通讯

    ---------------------------------------------------------------------------------------------------- ...

  4. linux上搭建ftp、vsftp, 解决访问ftp超时连接, 解决用户指定访问其根目录,解决ftp主动连接、被动连接的问题

    linux上搭建ftp 重要 解决如何搭建ftp         解决用户指定访问其根目录         解决访问ftp超时连接         解决ftp主动连接.被动连接的问题 1.安装ftp ...

  5. document.onclick在ios上不触发的解决方法与touchstart点击穿透处理

    document.onclick = function (e) { var e = e ? e : window.event; var tar = e.srcElement || e.target; ...

  6. 关于iOS上使用WWW引起的内存泄漏的临时解决方案

    原地址:http://www.unity蛮牛.com/thread-16493-1-1.html 目前,在的4.3.3.和4.3.4版本中存在一个iOS平台上的内存泄漏问题,即当使用WWW来下载和加载 ...

  7. 解决页面使用overflow: scroll,overflow-y:hidden在iOS上滑动卡顿的问题

    解决页面使用overflow: scroll,overflow-y:hidden在iOS上滑动卡顿的问题 div{ width: 100%; overflow-y: hidden; -webkit-o ...

  8. 【转】iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法

    iOS上面对键盘的处理很不人性化,所以这些功能都需要自己来实现, 首先是点击return和屏幕隐藏键盘 这个首先引用双子座的博客 http://my.oschina.net/plumsoft/blog ...

  9. react-native 在iOS上使用http链接的图片地址不显示| iOS9 & iOS10 HTTP 不能正常使用的解决办法

    https://segmentfault.com/a/1190000002933776 今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not ...

随机推荐

  1. Eclipse打不开,提示: An error has occurred. see the log file

    解决办法 删除.metadata目录下.plugins/org.eclipse.e4.workbench即可

  2. 《Eclipse中的一些快捷键》

    1,window--首选项--Java--templates 自定义模板. 2,快捷键. 2.1 alt+/ 内容辅助. 2.2 ctrl+1 : 对小红×的提供解决法案.大红×(代码错误)必须修改代 ...

  3. 关于XML文档

    很多人觉得XML很简单,但我想说其实一点也不简单,特别是在当今被各种web文档充斥的世界里有必要对XML进行一定程度的研究.下面的几篇博客将对XML技术进行简短的说明.

  4. SQL位运算符

    十进制 170 转二进制为:0000 0000 1010 1010 十进制 75  转二进制为:0000 0000 0100 1011 1.&(位与) 上下运算,按照与的运算规则:0& ...

  5. iphone APP 去广告。 【转载】

    iPhone怎么去广告?相信大家对APP中的广告条都非常不喜欢,界面丑且容易误点被跳转,相信很多朋友都使用插件来去除广告,但是不越狱怎么去广告呢?下面小编教大家不越狱去除iPhone广告. iPhon ...

  6. 安卓--Toast

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWind ...

  7. linux命令:gzip

    1.命令介绍: gzip用来压缩或解压文件,对文本文件的压缩率有60~70%. 2.命令格式: gzip [选项] 文件/目录 3.命令参数: -a或--ascii  使用ASCII文字模式. -c或 ...

  8. webstorm mac版快捷键

    WebStorm快捷键(Mac版) ⌘--Command ⌃ --Control ⌥--alt ⇧--Shift ⇪--Caps Lock fn--功能键就是fn 编辑 Command+alt+T 用 ...

  9. 标准盒子模型和IE盒子模型

    标准盒子模型 = margin + border + padding + content (content =  width | height) IE盒子模型 = margin + content ( ...

  10. 十个最适合 Web 和 APP 开发的 NodeJS 框架

    在浏览器以外运行 JavaScript 对于 JavaScript 爱好者来说非常神奇,同时也肯定是 web 应用程序开发界最受欢迎的进步之一.全球各地的开发者张开双臂拥抱 NodeJS. 对于新手来 ...