在Libev中,如果某种结构的数组需要扩容,它使用array_needsize宏进行处理,比如:
array_needsize (int, fdchanges, fdchangemax, fdchangecnt, EMPTY2);
这就表示要将整型(int)数组fdchanges,由原来的fdchangemax个元素扩容为fdchangecnt,新扩容的内存空间使用EMPTR2进行初始化。
array_needsize宏定义如下:
#define array_needsize(type,base,cur,cnt,init) \
if (expect_false ((cnt) > (cur))) \
{ \
int ecb_unused ocur_ = (cur); \
(base) = (type *)array_realloc(sizeof(type), (base), &(cur), (cnt