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