Bonsoir,

j'ai un problème avec l'utilisation de std::streambuf. Apparemment, il travaille avec des char*, mais visiblement, j'ai du mal à gérer la mémoire dans mon projet.

Admettons le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
template <typename T>
inline std::string read(std::ifstream& ifs, const T& offset, const T& size)
{
	std::streambuf *pbuf = ifs.rdbuf();
	char* contents = new char[size + 1];
	pbuf->pubseekoff(offset, ifs.beg);
	pbuf->sgetn(contents, size);
	contents[size] = '\0';
	std::string datas(contents);
	delete[] contents;
	delete pbuf;
	return datas;
}
Cette fonction est appelée des millions de fois , la désallocation ne se semble pas se dérouler correctement, ma mémoire RAM finit par saturer.. J'ai du oublier un détail.

Merci d'avance pour vos réponses.