4 ms·
RAII solves only a fraction of the various scenarios you encounter with memory/resource management. It helps when you're temporarily creating and then destroyin
by cyber_kinetist 4y ago
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.
- lenkite 4y agoThis is basically memory arenas right ? How does one handle problems as described here https://www.celonis.com/blog/c-memory-arenas-and-their-implications/ https://www.celonis.com/blog/c-memory-arenas-and-their-impli..., where memory appears to not be returned to the OS ?
- Thorrez 4y agoIn 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.