Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con ::SysFreeString()

Estas en el tema de Problema con ::SysFreeString() en el foro de C/C++ en Foros del Web. Hola. Tenía un problema de memoria con una función que se ejecuta muchas veces. Cada vez que se ejecutaba aumentaba la memoria del programa. El ...
  #1 (permalink)  
Antiguo 16/11/2009, 09:51
 
Fecha de Ingreso: noviembre-2008
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema con ::SysFreeString()

Hola. Tenía un problema de memoria con una función que se ejecuta muchas veces. Cada vez que se ejecutaba aumentaba la memoria del programa.

El caso es que, para intentar aislar el problema, eliminé todo el código de la función dejando sólo esto:

void Clase::Funcion(CString cadena)
{
_bstr_t aux = cadena.AllocSysString();
::SysFreeString(aux);
}

En teoría este código (aparte de no hacer nada) no generaría ningún problema de memoria, sin embargo, la memoria que ocupa el programa no deja de crecer.

Estoy seguro de que el problema está aquí. Si elimino la llamada a esta función el problema desaparece.

¿Alguien puede ayudarme?

Gracias.
  #2 (permalink)  
Antiguo 18/11/2009, 06:09
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con ::SysFreeString()

Es raro, deberia funciona bien segun la documentacion. ¿Alguna razon para no usar BSTR? ¿Alguna razon para querer liberarlo manualmente?

¿Con que estas viendo el consumo de memoria?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 18/11/2009, 06:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con ::SysFreeString()

Probé a utilizar BSTR en lugar de _bstr_t y problema resuelto. ¡No se me había ocurrido, qué torpe!

El consumo de memoria lo estaba mirando con el Task Manager de Windows. ¿Sería mejor utilizar otra herramienta?

Gracias.
  #4 (permalink)  
Antiguo 18/11/2009, 06:56
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con ::SysFreeString()

Al parecer _bstr_t tambien reserva memoria para una cadena en Unicode que no se libera cuando haces el SysFreeString ... el Task Manager iba bien en este caso aunque el Process Explorer suele ser mas potente.

De nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 18/11/2009, 06:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con ::SysFreeString()

Lo probaré. Gracias de nuevo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:34.