【发布时间】:2018-10-12 20:26:39
【问题描述】:
我需要在递归函数中传递一个双指针来重新分配这个大小。这是函数:
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);
}
}
这个函数没有重新分配好内存(过程很好,错误在递归调用中)。我已经尝试过这个功能,它工作正常:
int redimensionar(PERSONA **tablaHash, PERSONA reg, int tam, int tipoPruebaColision, int n) {
n *= 2;
*tablaHash = realloc( *tablaHash, (n*tam) * sizeof(PERSONA) );
insertar(*tablaHash, reg, tam, tipoPruebaColision);
}
所以内存重新分配很好,问题是将双指针传递给递归函数。知道应该如何通过吗?
问题是:如何将双指针传递给递归函数以使其正常工作?第一个条目很好,递归条目没有,所以指针在递归中没有很好地传递。
谢谢。
【问题讨论】:
-
您是否阅读过minimal reproducible example,这对于人们做出快速准确的回答非常重要。
-
insertar(tablaHash...) -
另外:你没有完全正确地使用
realloc... -
你是如何创建指针的?你是怎么调用这个函数的?
-
请不要在cmets后修改代码。只需发布显示问题的Minimal, Complete, and Verifiable example。
标签: c pointers recursion dynamic-memory-allocation