Avihai Marchiano
Avihai Marchiano

Reputation: 3927

Does memory for localtime need to be deallocated?

void log(){
    time_t current = time(0);
    tm *ptm = localtime(&current);
        stuf...
}

Just want to be sure - do i need to release tm pointer allocated memory at the end of the method?

Upvotes: 24

Views: 10523

Answers (2)

Rost
Rost

Reputation: 9089

No, you shouldn't. This structure is statically allocated and shared by the functions gmtime and localtime. Each time either one of these functions is called the content of this structure is overwritten.

So be careful with results - e.g. copy them immediately and don't store the pointer.

Upvotes: 9

Alok Save
Alok Save

Reputation: 206546

No you should not deallocate it,the structure is statically allocated.

Check the documentation:

Return value
pointer to a static internal std::tm object on success, or NULL otherwise. The structure may be shared between std::gmtime, std::localtime, and std::ctime, and may be overwritten on each invocation.

Upvotes: 29

Related Questions