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

確認したいのですが、メソッドの最後に tm ポインターに割り当てられたメモリを解放する必要がありますか?

4

2 に答える 2

27

いいえ、割り当てを解除しないでください。構造は静的に割り当てられます。

ドキュメントを確認してください:

成功した場合、またはそうでない場合
は、静的内部std::tmオブジェクトへの値ポインターを返しますNULLstd::gmtime構造体は、std::localtime、およびの間で共有される場合がありstd::ctime、呼び出しごとに上書きされる場合があります。

于 2012-08-31T09:16:54.607 に答える
8

いいえ、すべきではありません。gmtimeこの構造体は、関数およびによって静的に割り当てられ、共有されますlocaltime。これらの関数のいずれかが呼び出されるたびに、この構造体の内容が上書きされます。

そのため、結果には注意してください。たとえば、結果をすぐにコピーし、ポインターを保存しないでください。

于 2012-08-31T09:23:07.277 に答える