给定 sizeof(void*) >= sizeof(int),在树中收集整数是否安全
void *map=0;
tsearch(42, &map, int_cmp);
?
我得到了段错误,除了不常用的用法之外,我没有看到代码中的任何缺陷。
编辑:当然,我不是取消引用指针,只是转换回 int。想法是 int 可以适合 void* 变量,所以我不需要堆分配。
给定 sizeof(void*) >= sizeof(int),在树中收集整数是否安全
void *map=0;
tsearch(42, &map, int_cmp);
?
我得到了段错误,除了不常用的用法之外,我没有看到代码中的任何缺陷。
编辑:当然,我不是取消引用指针,只是转换回 int。想法是 int 可以适合 void* 变量,所以我不需要堆分配。
tsearch的第一个参数必须是一个指针。在这种情况下,数字 42 被解释为指针,因此是段错误。尝试:
void *map=0;
int key = 42;
tsearch(&key, &map, int_cmp);