5 ms·
Writing C++ code that leaks a std::vector is absolutely trivial, happens all the time and requires no skill. auto* v = new std::vector<char>();
by vardump 6y ago
Writing C++ code that leaks a std::vector is absolutely trivial, happens all the time and requires no skill.
auto* v = new std::vector<char>();
- fluffything 6y agoI disagree in that it requires no skill: it requires the user to avoid doing the obvious thing: vector<int> foo {...}; and heap allocate a vector on the heap with `new` (without using a smart pointer), and then avoiding your linters warnings about this (e.g. clang-tidy). If this is common in your place of work, I truly pity you. Also, trading a call to `free` for a second call to malloc, and a second pointer indirection to the vector elements, isn't a very effective way of improving performance to beat the JVM. The whole idea behind leaking memory is doing less operations, not more :D In Rust, leaking "the right way" is trivial (mem::forget is safe), but in C++, leaking the stack allocated vector probably requires putting it behind an union or aligned_storage or similar.