포인터 메모리를 삭제하려고 할 때 _BLOCK_TYPE_IS_VALID (pHead-> nBlockUse) 오류가 발생합니다. 나는 두 번 삭제 해요처럼 보인다._BLOCK_TYPE_IS_VALID (pHead-> nBlockUse 오류) Visual Studio 2012
이사람이 안내 주실 래요 ..
enum SHAPE_TYPES {RECTANGLE, TRIANGLE, CIRCLE};
map<SHAPE_TYPES,vector<Shape *>> shapeMap;
vector<Shape *>rectVector;
shapeMap.insert(pair<SHAPE_TYPES, vector<Shape*>>(RECTANGLE,rectVector));
map<SHAPE_TYPES,vector<Shape *>>::iterator mapIter;
mapIter = shapeMap.find(RECTANGLE);
if (mapIter != shapeMap.end())
{
// create the shape
RandomAttributes(R[shapes]);
// the key was found, so add data
shapePtr = R;
mapIter->second.push_back(shapePtr);
}
나중에
map<SHAPE_TYPES,vector<Shape *>>::iterator mapIter;
mapIter = shapeMap.find(RECTANGLE);
if (mapIter != shapeMap.end())
{
if (!mapIter->second.empty())
{
mapIter->second.back()->Draw();
delete mapIter->second.back(); // -- error causing line
mapIter->second.pop_back();
}
}
'R'이란 무엇입니까? '모양 '이란 무엇입니까? 'RandomAttributes'는 무엇을합니까? [Minimal, Complete, Verifiable example] (http://stackoverflow.com/help/mcve)를 만들어 보여 주시겠습니까? –
R는 Rectangle 클래스의 객체입니다. 셰이프는 for 루프의 카운터 일뿐입니다. 그것은 기본적으로지도 내부의 벡터에 삽입 한 요소의 수와 동일하게 반복됩니다. RandomAttributes는 다른 클래스의 다른 객체에 일부 기능을 할당합니다. 그 중 아무 것도 실제로 포인터를 삭제하는 것과 아무 관계가 없다고 생각합니다. 나는 데이터를 삭제하는 데 소멸자가 없다는 것을 확인했다. – rSU
우리가 정말로 알아야 할 것은 * 선언하고 *'R'을 초기화하는 방법입니다. 배열입니까? 동적으로 할당합니까? –