簡體   English   中英

C ++ struct tm&time_t

[英]C++ struct tm & time_t

我在這里有一段時間:

struct cl{
    unsigned char *buffer;
    time_t t = time(0);  
    struct tm * ct = localtime(&t);
};

然后:

cl sadi[10];

但是例如我在21:58得到了sadi[5] ,當我在21:59得到一個sadi[6] 然后我再次檢查我的所有sadi[].ct->tm_min59 有什么問題? 難道它無法抓住你抓住它的那一刻,它會不會更新? 如果是這樣,我怎樣才能抓住時刻,而不是像那樣更新。

這一行:

struct tm* ct = localtime(&t);

問題是localtime(&t)返回的指針是一個靜態內部緩沖區。 因此每次調用它都會返回完全相同的指針值(地址)。 這意味着所有數組元素都具有指向同一struct tm對象的指針。

一種解決方案是每次調用localtime復制數據:

struct cl {
    unsigned char* buffer;
    time_t t = time(0);  
    struct tm ct = *localtime(&t);
};

所以現在我宣布struct tm ct; (不是指針)並使用返回指針*localtime(&t)解除引用值對其進行初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM