저는 작업중인 게임의 편집기를 해킹하고 있습니다. 해당 편집기의 일부로 분명히 텍스처가 있어야합니다. std :: map 변수를 만들었습니다.비정상적인 std :: map 런타임 오류
std::map<std::string, unsigned int> textures;
내 이미지로드 코드에 다음 스 니펫이 있습니다.
unsigned int id;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imageWidth, imageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
glBindTexture(GL_TEXTURE_2D, 0);
textures[filename] = id;
이제 위의 코드를 사용하여 어떤 이유로 런타임 오류가 발생합니다. 액세스 위반 오류, 디버깅 할 때 표준 : 맵 코드 자체에 저를 가리키는 것으로, 특히,이 부분 :
_Nodeptr _Lbound(const key_type& _Keyval) const
{ // find leftmost node not less than _Keyval
_Nodeptr _Pnode = _Root(); // ** this is the highlighted line **
_Nodeptr _Wherenode = _Myhead; // end() if search fails
while (!_Isnil(_Pnode))
if (_DEBUG_LT_PRED(this->comp, _Key(_Pnode), _Keyval))
_Pnode = _Right(_Pnode); // descend right subtree
else
{ // _Pnode not less than _Keyval, remember it
_Wherenode = _Pnode;
_Pnode = _Left(_Pnode); // descend left subtree
}
return (_Wherenode); // return best remembered candidate
}
나는 단지 시스템을 테스트하는 내 이미지 로딩 기능을 하나의 호출을 만들고 있어요 . 내가 변수를 확인하고 파일 이름과 id 변수가 모두 정확합니다. 런타임 오류를 일으키는 원인이 될 수있는 아이디어는 무엇입니까?
지도에 문제가있는 것처럼 보이지 않습니다. 아마도 메모리가 다른 곳에서 손상되고 있습니까? 이 코드에서 valgrind와 같은 것을 실행 해 보셨습니까? –
파일 이름이 std :: string입니까? – Brian
@brian - 중요하지 않아야합니다.지도 키는 사본이됩니다. –