我正在写一个函数来增加用malloc创建的动态内存对象的大小该函数应该作为参数,将指针指向要增加的内存块、块的当前大小和块要增加的量。
像这样的:
int getMoreSpace(void **pnt, int size, int add) {
xxxxxx *tmp; /* a pointer to the same as pnt */
if (tmp = realloc(pnt, (size+add)*sizeof(xxxxxx))) { /* get size of what pnt points to */
*pnt=tmp;
return 1;
else return 0;
}
问题是,不管pnt指向什么,我都希望函数工作我该如何实现?
最佳答案
这种类型的函数不可能工作,因为pnt
是本地的,一旦函数返回,新指针就会丢失。您可以接受类型为xxxxxx **
的参数,以便更新指针,但是您只能支持单个类型。
真正的问题是,您正在为realloc
编写一个不必要且有害的包装器直接使用realloc
即可。没有办法通过包装使它更简单或更有效;它已经尽可能简单。
关于c - 如何使用C在同一函数中获取不同类型的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4618965/