访问冲突读取位置尝试获取系统时间时
Posted
技术标签:
【中文标题】访问冲突读取位置尝试获取系统时间时【英文标题】:Access violation reading location When trying to get system time 【发布时间】:2013-06-06 00:21:13 【问题描述】:这是我尝试获取时间的代码的 sn-p:
void GetDate(int &month,int &day,int &year)
time_t SystemTime;
struct tm *OSTime;
OSTime=localtime(&SystemTime);
month=OSTime->tm_mon;
day=OSTime->tm_mday;
year=OSTime->tm_year;
month+=1;
year+=1900;
当它到达时:
月=OSTime->tm_mon;
它抛出:
GonzalesP2.exe 中 0x01101123 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000010。
这里是调用GetDate的方法:
void Calendar::SetMonthYear(int mon,string sYr)
string temp;
GetDate(tMonth,tDay,tYear);
if(mon==0 && sYr=="0000")
mon=tMonth;
sYr=tYear;
month=mon;
//get the year
temp=sYear.at(2);
temp+=sYear.at(3);
year=atoi(temp.c_str());
//get the century
temp=sYear.at(0);
temp+=sYear.at(1);
cent=atoi(temp.c_str());
FillMonthGrid();
请帮忙。
【问题讨论】:
【参考方案1】:你又忘记了一步:
time (&SystemTime); //^^Should first do this
struct tm *OSTime;
OSTime=localtime(&SystemTime);
您可以在此处找到示例用法:localtime,在调用localtime
之前调用time
。
【讨论】:
我没有一个叫做 time 的 var,和OSTime=localtime(&SystemTime);
不一样
time
是另一个类似localtime
的函数,而不是变量。您的SystemTime
未初始化,它是time_t
的简单对象。您需要首先通过调用time
函数将当前时间放入SystemTime
。
@jgonzales394 没关系。唯一重要的是它有效。
@jgonzales394 欢迎您。当系统允许时,您可以考虑接受答案。以上是关于访问冲突读取位置尝试获取系统时间时的主要内容,如果未能解决你的问题,请参考以下文章