channel_map中元素的空间大小是与fd的值正相关的,而不是跟当前在线的连接数量正相关,这样做是不是有点浪费内存?
int event_loop_handle_pending_add(struct event_loop *eventLoop, int fd, struct channel *channel) {
.......
if (fd >= map->nentries) {
if (map_make_space(map, fd, sizeof(struct channel *)) == -1)
return (-1);
}
.....
}
int map_make_space(struct channel_map *map, int slot, int msize) {
if (map->nentries <= slot) {
....
while (nentries <= slot)
nentries <<= 1;
// 这里申请的内存空间与fd的值正相关
tmp = (void **) realloc(map->entries, nentries * msize);
.......
}
....
}
channel_map中元素的空间大小是与fd的值正相关的,而不是跟当前在线的连接数量正相关,这样做是不是有点浪费内存?