pal*_*ind 1 c dynamic-memory-allocation
我正在编写一个函数,它增加了使用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;
}
Run Code Online (Sandbox Code Playgroud)
问题是,无论pnt指向什么,我都希望函数能够工作.我如何实现这一目标?
这种类型的函数不可能工作,因为它pnt是本地的,并且一旦函数返回就会丢失新指针.您可以采用类型的参数,xxxxxx **以便您可以更新指针,但之后您只能支持单一类型.
真正的问题是你正在编写一个不必要且有害的包装器realloc.只需realloc直接使用就可以使用.通过包装它无法使其更简单或更有效; 它已经尽可能简单了.
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |