c++ - Do i need to delete a object that was constructed with new and placement -
class foo{ //some member     public:     int bar; }  int main(){     char* buffer = new char[100];     foo* f = new(buffer)foo(); //do have     delete f; //or      delete[] buffer; //enough } sure have delete if delete of foo has major effect on system lets simple storage object place compleatly inside of buffer , has no deconstructor delete other things.
- do have delete object places new inside of buffer or enough delete buffer?
- if have call delete on every object inside of buffer, why have todo this?
i read: what-uses-are-there-for-placement-new , says
you should not deallocate every object using memory buffer. instead should delete[] original buffer.
the correct way destroy object explicit destructor call:
f-> ~foo(); usually placement new used memory on stack. in case, it's heap allocation, need free buffer using form of delete matches new.
delete[] buffer; 
Comments
Post a Comment