Je suis en train de hacker un éditeur pour un jeu sur lequel je travaille et dans le cadre de cet éditeur, j'ai besoin de textures, évidemment. J'ai créé un std :: variable carte comme si,Erreur d'exécution std :: map inhabituelle
std::map<std::string, unsigned int> textures;
Dans mon image code de chargement, je l'extrait suivant.
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;
Maintenant, pour une raison quelconque, j'obtiens une erreur d'exécution après avoir tenté d'utiliser le code ci-dessus. Une erreur de violation d'accès, que, lorsque débogué, me pointe vers le code std :: carte elle-même, plus précisément, cette partie:
_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
}
Je ne fait un appel à mon image fonction de chargement juste pour tester le système . J'ai vérifié les variables et les variables de nom de fichier et d'id sont correctes. Des idées quant à ce qui pourrait causer le crash de l'exécution?
Il ne semble pas que vous fassiez quelque chose de mal avec la carte. Peut-être que la mémoire est corrompue ailleurs? Avez-vous essayé d'exécuter quelque chose comme valgrind sur ce code? –
Est-ce que filename est une chaîne std :: string? – Brian
@brian - ne devrait pas importer - la clé de la carte sera une copie –