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:

デバッガーからの出力

__NSCF文字列

(lldb)

メモリ エラーがどこにあるのかわかりません。CFArrayCreate() で文字列が渡されたためだと思います。

4

1 に答える 1

1

CFStringCreateWithBytes の戻り値を const void ** にキャストするのは正しくないため、クラッシュします。これはポインターへのポインターではなく、CFString へのポインターです。

于 2013-02-08T04:51:04.513 に答える