Hi, > > + if (!(v % 16)) { > > + *iov = g_realloc(*iov, sizeof(struct iovec) * (v + 16)); > > + if (addr) { > > + *addr = g_realloc(*addr, sizeof(uint64_t) * (v + 16)); > nit: just wondering why you chose to do the alloc by slice of 16 instead > of doing the usual allocation at the beginning and re-allocating the iov > when l != len.
It's unknown in advance how many iov entries I'll need. So I'll go allocate them on demand. To avoid one (or two) realloc calls on each single loop run allocate in chunks. Chunk size is 16 entries, it would also work with smaller or larger chunks. It's a tradeoff between realloc overhead (smaller chunks) and wasted memory (larger chunks). take care, Gerd