我正在制作我的库,就在我想理解指针语法时,我只是感到困惑,在网上搜索并变得更加困惑。
基本上我想做一个游泳池,这就是我真正想做的事情:
必须尊重以下几点:
- 当我将一个对象添加到池中时,当前数组指向对象的指针被添加到一个新的指针数组 + 1(以包含新对象)。
- 新数组由我的 foo 结构的“对象”指向。
- 旧阵列正在释放。
- 当我调用清理函数时,池中的所有对象都是空闲的
我应该如何定义我的结构?
typedef struct {
int n;
(???)objects
} foo;
foo *the_pool;
这是管理我的池的代码:
void myc_pool_init ()
{
the_pool = (???)malloc(sizeof(???));
the_pool->n = 0;
the_pool->objects = NULL;
}
void myc_push_in_pool (void* object)
{
if (object != NULL) {
int i;
(???)new_pointers;
the_pool->n++;
new_pointers = (???)malloc(sizeof(???)*the_pool->n);
for (i = 0; i < the_pool->n - 1; ++i) {
new_pointers[i] = (the_pool->objects)[i]; // that doesn't work (as I'm not sure how to handle it)
}
new_array[i] = object;
free(the_pool->objects);
the_pool->objects = new_array; // that must be wrong
}
}
void myc_pool_cleanup ()
{
int i;
for (i = 0; i < the_pool->n; ++i)
free((the_pool->objects)[i]); // as in myc_push_in_pool, it doesn't work
free(the_pool->objects);
free(the_pool);
}
注意:添加到池中的对象的类型事先不知道,所以我应该处理所有指针作为 void 任何反馈都会非常受欢迎。