memcpy вызывает «исключая плохой доступ» - PullRequest
1 голос
/ 02 октября 2011

Я пытаюсь перебрать массив и скопировать данные, но после 1023 циклов я получаю сообщение exc bad access, и у меня возникает ощущение, что это может быть связано с моей памятью.В моем цикле мне нужно добавить данные в мой массив totalValues, поэтому я сделал это:

memcpy(totalValues + totalCopied, tempBuffer, 600 * sizeof(float));

Это делается внутри цикла, а totalCopied отслеживает, сколько данных было добавлено кtotalValues так, чтобы я знал, откуда писать, когда цикл снова запускает memcpy.Я не уверен, почему я получаю ошибку «exc bad access», но моя теория состоит в том, что память не является смежной и, следовательно, строка totalValues + totalCopied может вызывать проблемы.Я не уверен, что в этом случае возникнет ошибка, или память все равно будет перезаписана.Интересно, что это всегда происходит после 1023 циклов.Если я удаляю строку 'memcpy', программа проходит без проблем.Есть идеи, что может быть причиной этого?

РЕДАКТИРОВАТЬ - Причина была в том, что распределение памяти было жестко запрограммировано для другого файла.Обычно я не знаю длину файла до выделения памяти, так как я могу убедиться, что во время выполнения выделено достаточно памяти?

1 Ответ

2 голосов
/ 02 октября 2011

Похоже, вы пишете больше байтов, чем может содержать totalValues.Покажите нам, как вы его распределяете.

Кстати, мы обычно так поступаем с объектами NSData на iOS.

...