0
unsigned char _MyString[] = {0xda, 0xe5, 0x18, ..., 0x00};

CFArrayRef array = CFArrayCreate(NULL,
                               (const void**) CFStringCreateWithBytes(NULL,
                                                                      _MyString,
                                                                      sizeof(_MyString),
                                                                      kCFStringEncodingASCII,
                                                                      FALSE),
                               1,
                               &kCFTypeArrayCallBacks);

CFShow(arr); // <-- EXEC_BAD_ACCESS ERROR

调试器显示其失败

CoreFoundation`CFGetTypeID:

调试器的输出

__NSCFString

(lldb)

我不确定内存错误在哪里,我认为这一定是由于在 CFArrayCreate() 中传递了字符串。

4

1 回答 1

1

将 CFStringCreateWithBytes 的返回值转换为 const void ** 是不正确的,这就是它崩溃的原因。它不是指向指针的指针,而是指向 CFString 的指针。

于 2013-02-08T04:51:04.513 回答