Re:Legitimate Use of Variable Length Arrays
by scott_s on Monday October 28, 2019 @10:40AM
(#21377398)
In support of flohofwoe's point: good implementations of malloc will, on the common path, just bump a pointer without synchronization. The allocation path of good manual allocator implementations and garbage collectors will probably look similar.
[ Parent
| on HN ]
Re:Legitimate Use of Variable Length Arrays
by chrisseaton on Monday October 28, 2019 @03:24PM
(#21380568)
> In support of flohofwoe's point: good implementations of malloc will, on the common path, just bump a pointer without synchronization.
How does this work when the heap address space becomes fragmented, with randomly distributed available space and objects that are still live? You can't just bump when the next piece of memory may still be in use, and when you're not able to move memory.
Re:Legitimate Use of Variable Length Arrays
by lonelappde on Monday October 28, 2019 @05:04PM
(#21381648)
That's the uncommon path.
Re:Legitimate Use of Variable Length Arrays
by scott_s on Tuesday October 29, 2019 @09:57AM
(#21387191)
Yes, exactly. And! It exists in garbage collectors, too.
Re:Legitimate Use of Variable Length Arrays
by chrisseaton on Tuesday October 29, 2019 @11:54AM
(#21388565)
Why would you ever encounter a fragmented Eden in a garbage collector?
Re:Legitimate Use of Variable Length Arrays
by scott_s on Tuesday October 29, 2019 @05:56PM
(#21392523)
I wasn't thinking of that case in particular, but that there are other instance in a garbage collector where you will not just be able to bump a pointer: you need to request more memory from the OS, or you need to start a collection phase before satisfying a memory request.