所以,我有一个如下函数:
void myfunction1(int *number)
{
...
}
我有:
void myfunction2(int *number)
{
...
myfunction1(&number);
}
当我运行代码时,我收到错误:
warning: passing argument 1 of ‘myfunction1’ from incompatible pointer type
所以我将第二个功能改为:
void myfunction2(int *number)
{
...
myfunction1(&(*number));
}
我得到了:
dev(887) malloc: *** error for object 0x7fd400403810: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
有什么想法吗?
答案 0 :(得分:2)
Number已经是指向int的指针。因此,如果您执行&number
,其中number是int*
,则表示您正在传递指向int的指针。
void myfunction2(int *number)
{
myfunction1(number);
}
会做的伎俩
答案 1 :(得分:2)
number
已有int*
类型,因此您可以使用myfunction1
直接将其传递给myfunction1(number)
。 malloc
错误与您显示的任何代码无关。
答案 2 :(得分:0)
void myfunction2(int *number)
{
...
myfunction1(number);
}
在myfunction2中,number已经是一个指针,所以将它传递给myfunction1