in src/annoylib.h [1299:1317]
void _reallocate_nodes(S n) {
const double reallocation_factor = 1.3;
S new_nodes_size = std::max(n, (S) ((_nodes_size + 1) * reallocation_factor));
void *old = _nodes;
if (_on_disk) {
if (!remap_memory_and_truncate(&_nodes, _fd,
static_cast<size_t>(_s) * static_cast<size_t>(_nodes_size),
static_cast<size_t>(_s) * static_cast<size_t>(new_nodes_size)) &&
_verbose)
annoylib_showUpdate("File truncation error\n");
} else {
_nodes = realloc(_nodes, _s * new_nodes_size);
memset((char *) _nodes + (_nodes_size * _s) / sizeof(char), 0, (new_nodes_size - _nodes_size) * _s);
}
_nodes_size = new_nodes_size;
if (_verbose) annoylib_showUpdate("Reallocating to %d nodes: old_address=%p, new_address=%p\n", new_nodes_size, old, _nodes);
}