sizeof(void*) >= sizeof(int) の場合、ツリーで int を収集しても安全ですか?
void *map=0;
tsearch(42, &map, int_cmp);
?
segfault が発生し、その異常な使用法以外にコードに欠陥は見られません。
編集:もちろん、私はポインターを逆参照しているのではなく、int に戻すだけです。int は void* 変数に組み込むことができるので、ヒープ割り当ては必要ありません。
sizeof(void*) >= sizeof(int) の場合、ツリーで int を収集しても安全ですか?
void *map=0;
tsearch(42, &map, int_cmp);
?
segfault が発生し、その異常な使用法以外にコードに欠陥は見られません。
編集:もちろん、私はポインターを逆参照しているのではなく、int に戻すだけです。int は void* 変数に組み込むことができるので、ヒープ割り当ては必要ありません。
tsearchの最初のパラメーターはポインターでなければなりません。この場合、数値 42 はポインタとして解釈されるため、segfault が発生します。試す:
void *map=0;
int key = 42;
tsearch(&key, &map, int_cmp);