[英]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_min
是59
。 有什么問題? 難道它無法抓住你抓住它的那一刻,它會不會更新? 如果是這樣,我怎樣才能抓住時刻,而不是像那樣更新。
這一行:
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.