News for hackers. Stuff that matters.
Re:Building a Cloud Database from Scratch: Why We Moved from... by criddell on Friday May 27, 2022 @08:48PM (#31536575)
Some C compiler have a language extension to help with cleanup to help with memory and resource leaks. It lets you do RAII-type resource management that is popular in languages like C++ but the C version is way uglier.

https://en.wikipedia.org/wiki/Resource_acquisition_is_initia...

Re:Building a Cloud Database from Scratch: Why We Moved from... by cyber_kinetist on Friday May 27, 2022 @09:29PM (#31536789)
RAII solves only a fraction of the various scenarios you encounter with memory/resource management. It helps when you're temporarily creating and then destroying a resource right after, but these only hold for very simple use cases and doesn't help with much more complex real-world scenarios.

(Example: you'll understand this when you have experience with any graphics APIs, RAII wrappers don't really help you that much and will actually make your life way harder...)

My solution for general resource management, is to manage your resources manually on a central store (as you should be), get references to these objects using either pointers or indices, and use techniques like generational references to catch use-after-free scenarios at runtime. Makes things way simpler and performant.

Re:Building a Cloud Database from Scratch: Why We Moved from... by lenkite on Friday May 27, 2022 @11:33PM (#31537378)
This is basically memory arenas right ? How does one handle problems as described here https://www.celonis.com/blog/c-memory-arenas-and-their-impli..., where memory appears to not be returned to the OS ?
Re:Building a Cloud Database from Scratch: Why We Moved from... by Thorrez on Saturday May 28, 2022 @02:23AM (#31538044)
In that blog, the arena is managed by the underlying library, and the programmer has no control over when memory is returned, and sometimes the underlying library keeps the memory around when the programmer doesn't want it to. It sounds like cyber_kinetist is talking about manually managing the arena, so then the programmer is in direct control of when the memory is returned, so the problem won't happen.