←back to thread

327 points AareyBaba | 3 comments | | HN request time: 0.001s | source
Show context
mwkaufma ◴[] No.46183728[source]
TL;DR

- no exceptions

- no recursion

- no malloc()/free() in the inner-loop

replies(9): >>46183820 #>>46183900 #>>46184073 #>>46184113 #>>46184198 #>>46184398 #>>46184472 #>>46184588 #>>46185500 #
jandrewrogers ◴[] No.46183820[source]
i.e. standard practice for every C++ code base I've ever worked on
replies(1): >>46183866 #
DashAnimal ◴[] No.46183866[source]
What industry do you work in? Modern RAII practices are pretty prevalent
replies(2): >>46183904 #>>46184092 #
jandrewrogers ◴[] No.46183904[source]
What does RAII have to do with any of the above?
replies(4): >>46183995 #>>46184069 #>>46184097 #>>46184150 #
WD-42 ◴[] No.46183995[source]
0 allocations after the program initializes.
replies(4): >>46184066 #>>46184067 #>>46184129 #>>46184331 #
Gupie ◴[] No.46184067[source]
Open a file in the constructor, close it in the destructor. RAII with 0 allocations.
replies(1): >>46187701 #
dh2022 ◴[] No.46187701[source]
std::vector<int> allocated and freed on the stack will allocate an array for its int’s on the heap…
replies(2): >>46189144 #>>46193524 #
usefulcat ◴[] No.46189144{3}[source]
I'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

replies(1): >>46189608 #
1. menaerus ◴[] No.46189608{4}[source]
WDYM? Vector is an abstraction over dynamically sized arrays so sure it does use heap to store its elements.
replies(2): >>46195886 #>>46205474 #
2. aw1621107 ◴[] No.46195886[source]
I 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.
3. ◴[] No.46205474[source]