我正在编写一个库,它使用静态分配的Byte类型的C数组,在zlib.h中定义。我发现代码在调用memset时崩溃了。完整的代码如下所示:
Byte compressedDataBuffer[kLabelBufSiz];
memset (compressedDataBuffer, 0, (kLabelBufSiz * sizeof(Byte)));
我尝试预先计算kLabelBufSiz * sizeof(Byte)的值并使用memset的数值,但它没有任何区别。这是一个单线程程序,两个调用之间没有代码,所以我知道内存和指针没有变化。我确认sizeof(字节)是1.我尝试将数组类型更改为char,这样就停止了崩溃,所以看起来Byte类型可能在这里扮演一个角色。
我写了一个较小的程序来调用这个库函数,并且它不会崩溃。非崩溃程序是纯C ++,而崩溃的程序是Objective-C ++。我在Mac OSX 10.6.7上使用gcc-4.2和XCode构建它们。 ObjC ++有什么可能导致问题吗?我以前从未遇到过从ObjC ++调用的C ++库的问题,但这并不意味着它们不存在。非常感谢任何帮助!
答案 0 :(得分:0)
Byte是一个包装类。使用char而不是byte。除非你必须使用Byte,否则不要使用memset