2

Core Foundations を使用するのは初めてです。辞書を使用して、キーと値のペアを保存したいと考えています。値は、構造体へのポインターでなければなりません。このポインターは、動的に割り当てられたバッファーを指しています。

CFMutableDictionaryRef init_hash_table() {

    return CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
}

これは辞書を作成するために使用され、戻り値はグローバル変数として格納されます。

CFNumberRef
create_hash_key(int sd) {
    return CFNumberCreate(NULL, kCFNumberIntType, &sd);
}


int
add_hash_entry(CFMutableDictionaryRef dict, int sd, void *pkt) {

    CFNumberRef key = create_hash_key(sd);

    CFDictionarySetValue(dict, key, pkt);
    return 0;
}

このコードを実行すると、segfault が発生します。pkt には有効なアドレスがあり、キーが作成されているようです。値の部分にポインタを割り当てる方法を知っている人はいますか?

プログラムは信号 EXC_BAD_ACCESS を受信しました。メモリにアクセスできませんでした。理由: アドレスの KERN_INVALID_ADDRESS: objc_msgSend_fixup () の 0x0000000000000011 0x00007fff8c9f339f

何か案は?

4

1 に答える 1