3 ms·
What industry do you work in? Modern RAII practices are pretty prevalent
by DashAnimal 10mo ago
What industry do you work in? Modern RAII practices are pretty prevalent
- jandrewrogers 10mo agoWhat does RAII have to do with any of the above?
- WD-42 10mo ago0 allocations after the program initializes.
- nicoburns 10mo agoRAII doesn't necessarily require allocation?
- Gupie 10mo agoOpen a file in the constructor, close it in the destructor. RAII with 0 allocations.
- dh2022 10mo agostd::vector<int> allocated and freed on the stack will allocate an array for its int’s on the heap…
- usefulcat 10mo agoI've heard that MSVC does (did?) that, but if so that's an MSVC problem. gcc and clang don't do that. https://godbolt.org/z/nasoWeq5M https://godbolt.org/z/nasoWeq5M
- menaerus 10mo agoWDYM? Vector is an abstraction over dynamically sized arrays so sure it does use heap to store its elements.
- aw1621107 10mo agoI think usefulcat interpreted "std::vector<int> allocated and freed on the stack" as creating a default std::vector<int> and then destroying it without pushing elements to it. That's what their godbolt link shows, at least, though to be fair MSVC seems to match the described GCC/Clang behavior these days.
- deleted 10mo ago[deleted]
- Gupie 10mo agoSure, but my point was that RAII doesn't need to involve the heap. Another example would be acquiring abd releasing a mutex.
- tialaramex 10mo agoRAII doesn't imply allocating. My guess is that you're assuming all user defined types, and maybe even all non-trivial built-in types too, are boxed, meaning they're allocated on the heap when we create them. That's not the case in C++ (the language in question here) and it's rarely the case in other modern languages because it has terrible performance qualities.
- jjmarr 10mo agoStack "allocations" are basically free.
- grougnax 10mo agoNo. And they're unsafe. Avoid them at all costs.
- nmhancoc 10mo agoNot an expert but I’m pretty sure no exceptions means you can’t use significant parts of std algorithm or the std containers. And if you’re using pooling I think RAII gets significantly trickier to do.
- theICEBeardk 10mo agohttps://en.cppreference.com/w/cpp/freestanding.html https://en.cppreference.com/w/cpp/freestanding.html to see the parts you can use.
- DashAnimal 10mo agoWell if you're using the standard library then you're not really paying attention to allocations and deallocations for one. For instance, the use of std::string. So I guess I'm wondering if you work in an industry that avoids std?
- jandrewrogers 10mo agoI work in high-scale data infrastructure. It is common practice to do no memory allocation after bootstrap. Much of the standard library is still available despite this, though there are other reasons to not use the standard containers. For example, it is common to need containers that can be paged to storage across process boundaries. C++ is designed to make this pretty easy.
- astrobe_ 10mo agoAnd what does "modern" has to do with it anyway.
- Cyan488 10mo agoThis is common in embedded systems, where there is limited memory and no OS to run garbage collection.
- criddell 10mo agoGarbage collection in C++?