iOS问题:出现崩溃问题,崩溃定位在汇编而不是具体代码
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