4 ms·
Realloc, if well implemented, does not copy (using virtual memory stuff).
by faragon 10y ago
Realloc, if well implemented, does not copy (using virtual memory stuff).
- hawski 10y agoIn this case would it work similarly to having single big mmap and counting on kernel allocating pages on first write? So for most cases you would only have a single mmap call and multiple page faults (as it would always be the case). I assume that most allocators do mmap for big allocations so it does not need to be called directly. I lately tried very naive synthetic test to check when realloc will return different address (meaning that it had to copy). My system started swapping, but it did not return different address. I did not know that realloc works like that, but why wouldn't it.
- hoytech 10y ago> check when realloc will return different address (meaning that it had to copy) What faragon is referring to is that this assumption is incorrect. The virtual address changing does not imply the memory was copied. On linux for example it could have been remapped with mremap(2).