4 ms·
Yes. You will have a memory leak if you don't delete that memory later. But don't use new. Just push/emplace it into the vector. Perhaps ask more on stackoverf
by hellofunk 10y ago
Yes. You will have a memory leak if you don't delete that memory later.
But don't use new. Just push/emplace it into the vector. Perhaps ask more on stackoverflow.
- Cyph0n 10y agoYeah, your comment is confusing though: > The objects will be allocated on the heap either way, and you don't need a stack object either. Just push or emplace the object into your vector and be done with it. When the vector is deleted, so will its contents, automatically I guess what you mean to say is that emplace_back will do the allocation and lifetime management. But using push_back on a stack-allocated object is going to result in a copy.
- hellofunk 10y agoemplacement doesn't handle lifetime management; the vector itself does this, whether you emplace or push. push_back with a stack object will copy the object, yes. Emplace_back with a stack object will also, they are not much different. But if you emplace by creating the object inside the emplace call itself, then there is no copy. see the examples here: http://en.cppreference.com/w/cpp/container/vector/emplace_back http://en.cppreference.com/w/cpp/container/vector/emplace_ba...
- Cyph0n 10y agoThat makes sense. Thanks for the help man, and sorry if I bothered you!