c++11 - C++ Out of scope delete operator of an object causes crash deallocating std::vector -


i have problem, when try delete manually allocated pointer, causes sigabrt, can't roots of cause. class looks like

class streammetadatareader {  protected:     std::ifstream csvfile;     std::vector<std::string> header;  public:     bool openfile(const std::string& path); }; 

the object created manually allocating memory using new operator , stored in third party library memory:

auto* reader = new streammetadatareader; vxsetnodeattribute(   node, vx_node_attribute_local_data_ptr, (void *) &reader, sizeof(streammetadatareader *) ); 

and pointer address passed around functions during program execution. can cast address object type , use properly. @ end of program, retrieve pointer last time , call delete operator free memory so:

streammetadatareader *reader = nullptr; vxquerynode(     node, vx_node_attribute_local_data_ptr, (void *) &reader, sizeof(streammetadatareader *) ); if (reader != nullptr) {     delete reader; } 

so debugger says execution stops when default destructor tries free std::vector<std::string> header; object member.

maybe has idea wrong here? know not best practice solution exact problem. maybe use case sort of smart pointer (e.g. weak pointer)?

thanks in advance.


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -