Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Warchief en 17 de Enero de 2007, 01:01:20 AM

Título: std::stringstream come memoria a lo largo del tiempo?
Publicado por: Warchief en 17 de Enero de 2007, 01:01:20 AM
Tenía unos problemas de consumo de memoria continuo en mi juego. Al final he llegado a esto:


#include <sstream>
int main(int argc, _TCHAR* argv[])
{
   while( true ) {
   std::stringstream keySS;
   }
return 0;
}


Uhm. Si lo ejecuto se pone a comer memoria como un loco. Cosa que no sucede con otras clases (como string). ¿Alguna sugerencia y/o comentario? (¿aparte de usar un static? :))

<edit>
Bug? (http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98861)


<edit2> Y otra pregunta mejor es, ¿por qué no lo detecta el Visual Leak Detector?
Título: std::stringstream come memoria a lo largo del tiempo?
Publicado por: shephiroth en 17 de Enero de 2007, 01:09:06 AM
No deberias declarar la variable fuera del while??? Ten en cuenta el ambito, si la creas dentro del while, ese es su ambito, por lo q en cada vuelta tiene q crear y destruir el objeto. Aunque esto deberia dejar la memoria libre...es raro...
Título: std::stringstream come memoria a lo largo del tiempo?
Publicado por: Warchief en 17 de Enero de 2007, 01:18:47 AM
Cita de: "shephiroth"No deberias declarar la variable fuera del while??? Ten en cuenta el ambito, si la creas dentro del while, ese es su ambito, por lo q en cada vuelta tiene q crear y destruir el objeto. Aunque esto deberia dejar la memoria libre...es raro...

Hombre, he llegado a ese main pasa aislar el problema. En realidad es:

// Pseudo
while ( juegoCorriendo ) {
 Logica()
 Render()
}

:)

Me parece excesivo declarar todas las variables locales a los métodos de casi todo el juego fuera del while del main. Si fuera una fast compo, a lo mejor :D

<edit>
CitarThis memory leak has been fixed in Service Pack 1, which was release to the public in December 2006. As well as installing the entire Service Pack (over 400MB) on your development machine, you will also have to install the updated VC8 distributable runtime libraries on any machine that your program run ons.
Ale, a actualizar se ha dicho.