答案 0 :(得分:9)
答案 1 :(得分:2)
答案 2 :(得分:1)
将元素大小作为单独的参数传递:
int getMoreSpace(void **pnt, int size, int add, size_t eltSize)
{
void *tmp;
if (tmp = realloc(pnt, (size+add)*eltSize))
{
*pnt=tmp;
return 1;
}
else
return 0;
}
...
int *p = malloc(100 * sizeof *p);
...
if (!getMoreSpace(&p, 100, 20, sizeof *p))
{
// panic
}
这是最直接的解决方案,即使不是最优雅的解决方案。 C只是不适合动态类型信息。
修改强>
根据史蒂夫的评论改变了pnt
的类型
击>
正如咖啡馆指出的那样,即使每个史蒂夫都有“修复”,这也行不通。 R.是的;不要这样做。