3

给定 sizeof(void*) >= sizeof(int),在树中收集整数是否安全

void *map=0; 
tsearch(42, &map, int_cmp);

?

我得到了段错误,除了不常用的用法之外,我没有看到代码中的任何缺陷。

编辑:当然,我不是取消引用指针,只是转换回 int。想法是 int 可以适合 void* 变量,所以我不需要堆分配。

4

1 回答 1

2

tsearch的第一个参数必须是一个指针。在这种情况下,数字 42 被解释为指针,因此是段错误。尝试:

void *map=0;
int key = 42;  
tsearch(&key, &map, int_cmp); 
于 2012-04-12T10:57:21.587 回答