void carray_foreach(struct carray* a, void (*carray_cb)(void*)) { int i; for (i = 0; i < a->count; ++i) carray_cb(carray_at(a, i)); }
void tcp_receiver_free(struct tcp_receiver* r) { int i; /*释放监视的事件*/ for (i = 0; i < carray_count(r->bevs); ++i) bufferevent_free(carray_at(r->bevs, i)); /*释放监听*/ evconnlistener_free(r->listener); carray_free(r->bevs); free(r); }
static void carray_grow(struct carray* a) { int i; struct carray* tmp = carray_new(a->size * 2); for (i = 0; i < a->count; i++) carray_push_back(tmp, carray_at(a, i)); free(a->array); a->head = 0; a->tail = tmp->tail; a->size = tmp->size; a->array = tmp->array; free(tmp); }