Salut � tous.
Voila, je dois faire des lectures binaires sur un flux de la stl. Pour cela, je commence par l'ouvrir en binaire puis j'utilise une fonction pour lire les donn�es au fur et � mesure. J'ai mis au point deux versions de cette fonction:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
 
	int yaread(struct SDL_RWops *context, void *ptr, int size, int maxnum) {
		std::istream* s = (std::istream*)context->hidden.unknown.data1;
		int taille=0;
		while(!s->eof() && taille<size*maxnum) {
			((char*)ptr)[taille] = s->get();
			taille++;
		}
		return taille/size;
	}
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
 
	int yaread(struct SDL_RWops *context, void *ptr, int size, int maxnum) {
		std::istream* s = (std::istream*)context->hidden.unknown.data1;
		int beg = s->tellg();
		s->seekg(0,ios::end);
		int end = s->tellg();
		s->seekg(beg,ios::beg);
		int taille = size*maxnum<=end-beg?size*maxnum:end-beg;
		s->read((char*)ptr,taille);
		return taille/size;
	}
Ne vous pr�occupez pas trop des deux premi�res lignes ni de la valeur de retour, cette fonction est appell�e par une biblioth�que qui n'est pas de moi.
Il faut savoir que ces deux versions fonctionnent, j'arrive � charger correctement mon image (parceque c'est une image) et � l'afficher. Ensuite, l'objet contenant cette fonction est d�truit, le flux est ferm� et mon programme continue son ex�cution (c'est un jeu de soci�t�, ca peut prendre longtemps).
Le probl�me est que si j'utilise la version num�ro 2 de cette fonction, le destructeur du flux provoque un plantage en acc�dant � une portion de m�moire invalide (je rapelle que ce destructeur est appel� longtemps apr�s l'ex�cution de ma fonction.
Je pourrais bien sur n'utiliser que la premi�re version de cette fonction, mais elle est incroyablement lente (forc�ment, si on lit les octets un � un...).

Quelqu'un verrait-il ou est l'erreur? J'utilise visual studio 2005.