Remix.run Logo
dh2022 3 days ago

std::vector<int> allocated and freed on the stack will allocate an array for its int’s on the heap…

usefulcat 2 days ago | parent | next [-]

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

menaerus 2 days ago | parent [-]

WDYM? Vector is an abstraction over dynamically sized arrays so sure it does use heap to store its elements.

aw1621107 2 days ago | parent | next [-]

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.

a day ago | parent | prev [-]
[deleted]
Gupie 2 days ago | parent | prev [-]

Sure, but my point was that RAII doesn't need to involve the heap. Another example would be acquiring abd releasing a mutex.