动态结构给出错误

时间:2010-12-27 19:14:05

标签: c memory-management malloc

int i=0;
void push(int *ptr)
{
    if(i==0)
    {
        ptr= (int *)calloc(1,sizeof(int));
    }
    else
    {
        ptr=(int *)realloc(ptr,sizeof(int)*(i+1));
    }
    i++;
}

当我添加两个或更多数字时,realloc发出错误(main.exe)

2 个答案:

答案 0 :(得分:3)

我假设你在其他地方有一个指针,你作为参数发送到函数“push”?

您需要发送指向该指针的指针,因此“push”函数可以更改其值。

答案 1 :(得分:0)

您可能需要做的主要事情是将push参数声明为int **ptr,分配给*ptr,然后使用&ptr进行调用。

你也需要演员和其他一些东西,我可能会建议:

int i=0;

void push(int **ptr)
{
    *ptr = i++ == 0 ? calloc(1,sizeof(int)) : realloc(ptr,sizeof(int)*(i+1));
}