Я пишу библиотеку, которая использует статически размещенный C-массив типа Byte, определенный в zlib.h. Я обнаружил, что код вылетает при вызове memset. Полный код выглядит так:
Byte compressedDataBuffer[kLabelBufSiz];
memset (compressedDataBuffer, 0, (kLabelBufSiz * sizeof(Byte)));
Я пытался предварительно вычислить значение kLabelBufSiz * sizeof (байт) и использовать числовое значение для memset, но это не имело никакого значения. Это однопоточная программа, и между двумя вызовами нет кода, поэтому я знаю, что память и указатель не меняются. Я подтвердил, что sizeof (Byte) равен 1. Я попытался изменить тип массива на char, и это остановило сбой, поэтому кажется, что здесь может играть роль тип Byte.
Я написал небольшую программу, которая вызывает эту библиотечную функцию, и она не дает сбоя. Не сбойная программа - чистый C ++, а сбойная - Objective-C ++. Я собираю их обоих на Mac OSX 10.6.7, с gcc-4.2 и XCode. Есть ли что-то в ObjC ++, что может вызвать проблемы здесь? У меня никогда не было проблем с библиотеками C ++, вызываемыми из ObjC ++, но это не значит, что их не существует. Любая помощь с благодарностью!