所以,我有一个函数如下:
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
有什么想法吗?
number
已经具有类型int*
,因此您可以使用myfunction1(number)
将其直接传递给myfunction1
。malloc
错误与您显示的任何代码无关。
Number已经是一个指向int的指针。因此,如果您执行&number
,其中Number是一个int*
,那么您将传递一个指向指向int指针的指针。
void myfunction2(int *number)
{
myfunction1(number);
}
将完成
基本上其他人说的是,这就是你应该做的:
void myfunction2(int *number)
{
...
myfunction1(number);
}
在myfunction2中,number已经是一个指针,因此将其原样传递给myfunction1