このコードがどのようにセグメンテーション違反を引き起こす可能性があるのか、私は完全に戸惑っています。コードは10.5+では正常に動作しますが、10.4ではsegフォルトが発生します。何か案は?フォールトはCFNumberGetValue中に発生します。CFNumberGetValueによるセグメント化エラー
EDIT:上記のコードは、以下のコードで辞書に追加された値を取得します。 mKitManager.GetKitVolume()は、デフォルト値の1.0を返します。
AddFloatToDictionary(dict, CFSTR("Volume"), mKitManager.GetKitVolume());
static void AddFloatToDictionary(CFMutableDictionaryRef dict, CFStringRef key, float value)
{
CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &value);
CFDictionarySetValue(dict, key, num);
CFRelease(num);
}
あなたは 'volume_num'が実際に' CFNumberRef'であり、そのタイプが 'kCFNumberFloatType'であることを確認しましたか? – Richard
はい!デフォルトのCFNumberRefが作成され、CFNumberGetValue呼び出しが行われる前にdictに追加されます。奇妙な。 –
"デフォルトのCFNumberRef"はどういう意味ですか? – Richard