我正在尝试遍历一个数组并复制数据,但是在 1023 次循环之后,我收到了一条 exc bad access
消息,我觉得这可能与我的内存有关.
在我的循环中,我需要将数据附加到我的 totalValues
数组,所以我这样做了:
memcpy(totalValues + totalCopied, tempBuffer, 600 * sizeof(float));
这是在一个循环内完成的,totalCopied
跟踪有多少数据被附加到 totalValues
以便我知道当循环再次遇到 memcpy 时从哪里写入.我不确定为什么会收到“exc bad access”错误,但我的理论是内存不连续,因此 totalValues + totalCopied
行可能会导致问题。我不确定在这种情况下是否会抛出错误,或者内存是否会被覆盖。有趣的是,它总是发生在 1023 次循环之后。如果我删除“memcpy”行,程序会毫无问题地循环执行。知道是什么原因造成的吗?
编辑 - 原因是内存分配是为另一个文件硬编码的。通常情况下,在分配内存之前,我并不知道文件的长度,那么如何确保在运行时分配足够的内存呢?
最佳答案
听起来您写的字节数超过了 totalValues 可以包含的字节数。向我们展示您是如何分配它的。
顺便说一下,我们通常在 iOS 上使用 NSData 对象来做这种事情。
关于iphone - memcpy 导致 'exc bad access',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623602/