이중 포인터를 사용하고 있지만 삭제하려고하면 힙 손상이 발생합니다. 응용 프로그램이 힙 끝 뒤에서 메모리에 쓴 것으로 감지되었습니다. 개체의 소멸자 내부 그것은 "충돌"이중 포인터를 삭제하면 힙이 손상됩니다.
Map::~Map()
{
for(int i = 0; i < mTilesLength; i++)
delete mTiles[i];
delete[] mTiles;
}
mTiles는 선언 같은 것을 : 객체 "스프라이트"상속 "타일"의 목적은
Tile **mTiles = NULL;
mTiles = new Tile *[mTilesLength];
for(int i = 0; i < mTilesLength; i++)
mTiles[i] = new Tile(...);
주목할만한 mTiles 경우 3 명의 소멸자 모두 가상 (지도, 타일, 스프라이트)으로 설정되어 있지만 차이가 있는지는 확실하지 않지만 지금까지는 작동하지 않는 것 같습니다.
수업이 3의 규칙을 따르고 있습니까? – chris
문제를 나타내는 최소한의 완벽한 테스트 사례를 구성 할 수 있습니까? 게시 한 코드에는 아무런 문제가 없으므로 문제는 다른 곳에 있습니다. – NPE
FWIW, 표시된 구문이 정확합니다. –