c++ - Getting error "Debug Assertion Failed" -
i have vector of pointers class created called polygon, has derived classes different shapes. relevant code looks this:
int main() { vector<polygon*> polygonvec; polygonvec.push_back(new triangle(2,3,1,2,-1,-4, "triangle 1")); polygon *temppolygon; temppolygon = new rectangle(1,2,3,4,5,6,7,8, "rectangle 1"); polygonvec.push_back(temppolygon); for(vector<polygon*>::iterator itr = polygonvec.begin(); itr != polygonvec.end(); itr++) { cout<<*itr<<endl; } for(vector<polygon*>::iterator itr = polygonvec.begin(); itr != polygonvec.end(); itr++) { delete *itr; } polygonvec.clear(); when compile , run in visual studio 2012, runs expected , gives required output, throws below error @ end
"debug assertion failed … _block_type_is_valid(phead->nblockuse)".
can tell me why happening?
make sure declare polygon destructor virtual, otherwise have undefined behaviour when try invoking delete on polymorphic object via pointer base.
Comments
Post a Comment