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
Post a Comment