A propos de std::streambuf
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:
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.