美文网首页
iOS问题:出现崩溃问题,崩溃定位在汇编而不是具体代码

iOS问题:出现崩溃问题,崩溃定位在汇编而不是具体代码

作者: 啦啦啊哈一无 | 来源:发表于2021-02-21 17:25 被阅读0次

    iOS问题:出现崩溃问题,崩溃定位在汇编而不是具体代码

    项目场景:

    做一个软件,当接收到较大图片时,软件就会崩溃退出。而且定位在汇编,而不是以往的代码。

    问题描述:

    提示:

    尝试了静态查找内存泄漏,动态查找内存泄漏,野指针,全局断点等等,都没有找到具体问题所在,然后,我就用了最笨的一种方法,一句一句代码的筛查,最后定位到了一句代码。memcpy(signalCache + currentLoc, dataByte, data.length);

    Byte signalCache[5000];

    int currentLoc = 0;

    @implementation SignalCache

    +(void)addDataToSignalCache:(NSData *)data {

        Byte *dataByte = (Byte *)[data bytes];

        memcpy(signalCache + currentLoc, dataByte, data.length);

    }

    原因分析:

    这里查一下 memcpy的使用就明白了,很简单。memcpy()内存操作函数可以完成一些数据的复制、赋值等操作。查到原函数为void memcpy(voiddest, const void *src, size_t n);功能是由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。source和destin所指内存区域不能重叠,函数返回指向destin的指针。

    我这里的问题就是destin的内存区域留小了,所以收到较大内存时会崩溃。

    //注意,source和destin都不一定是数组,任意的可读写的空间均可。

    解决方案:

    发现是signalCache[5000]的5000小了,改为了8000就好了。 

    真的是很浪费时间的一个问题。

    参考:

    这里是引用 https://blog.csdn.net/iteye_2449/article/details/82162957?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=a02df5b4-8c05-4afa-a7a1-ff547f50a5f9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

    相关文章

      网友评论

          本文标题:iOS问题:出现崩溃问题,崩溃定位在汇编而不是具体代码

          本文链接:https://www.haomeiwen.com/subject/ugpqfltx.html