2012-08-31 9 views
14
void log(){ 
    time_t current = time(0); 
    tm *ptm = localtime(&current); 
     stuf... 
} 

Sólo quiere estar seguro - ¿Es necesario para liberar la memoria asignada puntero tm al final del método?¿Es necesario desasignar la memoria para el tiempo local?

+0

posible duplicado de [¿Cómo es la estructura resultado de la hora local asignado en C?] (Http://stackoverflow.com/questions/8694365/how-is-the-result-struct-of-localtime-allocated-in- c) – user

+0

Consulte también [Cómo resolver las fugas dyld y localtime al crear un perfil de un proyecto?] (http://stackoverflow.com/q/10105181) – jww

Respuesta

20

No, no debe desasignarlo, la estructura está asignada estáticamente.

Comprobar la documentation:

Valor de retorno
puntero a un objeto estático interno std::tm en caso de éxito, o de lo contrario NULL. La estructura se puede compartir entre std::gmtime, std::localtime y std::ctime, y se puede sobrescribir en cada invocación.

+0

¿qué quiere decir con asignación estática? dosnt asignado en el montón por la implementación de tiempo local? –

+0

@ user1495181: referencia añadida para usted. –

+1

s/should not/must not/ –

5

No, no debería. Esta estructura está asignada y compartida estáticamente por las funciones gmtime y localtime. Cada vez que se llama una de estas funciones, se sobrescribe el contenido de esta estructura.

Tenga cuidado con los resultados, p. cópialos inmediatamente y no almacenes el puntero.

Cuestiones relacionadas