C 在递归函数内传递双指针

C 在递归函数内传递双指针,c,pointers,recursion,dynamic-memory-allocation,C,Pointers,Recursion,Dynamic Memory Allocation,我需要在递归函数中传递一个双指针,它的大小就是这个。这就是功能: int main(){ PERSONA *tablaHash = (PERSONA *) malloc(1 * sizeof(PERSONA)); redimensionar(&tablaHash, regToInput, 1, "TypeA", 1); return 0; }; int redimensionar(PERSONA **tablaHash, PERSONA reg, int ta

我需要在递归函数中传递一个双指针,它的大小就是这个。这就是功能:

int main(){
    PERSONA *tablaHash = (PERSONA *) malloc(1 * sizeof(PERSONA));
     redimensionar(&tablaHash, regToInput, 1, "TypeA", 1);
    return 0;
};

int redimensionar(PERSONA **tablaHash, PERSONA reg, int tam, int tipoPruebaColision, int n) {
    if (n < 15) {
        n *= 2;
        *tablaHash = realloc( *tablaHash, (n*tam) * sizeof(PERSONA) );
        return ( redimensionar(tablaHash, reg, n*tam, tipoPruebaColision, n) ); //HERE IS THE ERROR
    }
    else {
        insertar(*tablaHash, reg, tam, tipoPruebaColision);
        return (tam);
    }
}
所以内存重新分配是可以的,问题是将双指针传递给递归函数。你知道该怎么通过吗

问题是:如何将双指针传递给递归函数才能正常工作?第一个条目很好,递归条目没有,所以指针在递归中传递的不是很好


谢谢。

经过8次迭代后,
tam
变得非常大,以至于溢出并变成
0

1. n = 2, tam = 1 2. n = 4, tam = 2 3. n = 8, tam = 8 4. n = 16, tam = 64 5. n = 32, tam = 1024 6. n = 64, tam = 32768 7. n = 128, tam = 2097152 8. n = 256, tam = 268435456 9. n = 512, tam = 0 1.n=2,tam=1 2.n=4,tam=2 3.n=8,tam=8 4.n=16,tam=64 5.n=32,tam=1024 6.n=64,tam=32768 7.n=128,tam=2097152 8.n=256,tam=268435456 9n=512,tam=0
因此,您尝试分配
0
字节,而
realloc
返回NULL。您应该经常检查
malloc()/realloc()
是否返回空值。

您是否阅读过,这对于人们快速准确地回答非常重要。
insertar(tablaHash…
另外:您没有正确地使用
realloc
,您是如何创建指针的?您如何调用该函数?请不要在注释后更改代码。只需发布显示问题的。谢谢,我已经检查过了,永远不要返回空值。问题是,很明显,realloc不是realloc父变量,只是局部变量,但我已经通过引用传递了父变量,我正在更新它的值。。。所以我不知道是什么happening@JuMoGar通过较少的迭代,它在我的测试中工作得很好:……等等,您是否意识到,
realloc()
可以保持指针不变但仍然成功?是的,谢谢,我已经看到了这个答案的问题。这是父变量中的一个小错误 1. n = 2, tam = 1 2. n = 4, tam = 2 3. n = 8, tam = 8 4. n = 16, tam = 64 5. n = 32, tam = 1024 6. n = 64, tam = 32768 7. n = 128, tam = 2097152 8. n = 256, tam = 268435456 9. n = 512, tam = 0