0

所以,我有一个功能如下:

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

有任何想法吗?

4

3 回答 3

2

Number 已经是一个指向 int 的指针。因此,如果你在&numberwhere number is an 处执行操作,int*你就是在传递一个指向 int 的指针。

void myfunction2(int *number)
{
    myfunction1(number);
}

会成功的

于 2013-07-28T20:50:23.847 回答
2

number已经有类型int*,所以你可以将它直接传递给myfunction1with myfunction1(number)。该malloc错误与您显示的任何代码无关。

于 2013-07-28T20:50:56.830 回答
0

基本上其他人所说的是这是你应该做的:

void myfunction2(int *number)
{
    ...
    myfunction1(number);
}

在 myfunction2 中,number 已经是一个指针,所以将它原样传递给 myfunction1

于 2013-07-28T20:52:11.650 回答