1,221
社区成员
发帖
与我相关
我的任务
分享
我是在一个线程里用的。前面getlocaltime,后面sprintf成字符串,然后用来作为文件名存文件另外我设置断点之后,发现getlocaltime的结果就是错误的。 [quote=引用 8 楼 DelphiGuy 的回复:]
没有影响,除非你在多线程中调用GetSystemTime/GetLocalTime,但写同一个SYSTEMTIME
我是在一个线程里用的。前面getlocaltime,后面sprintf成字符串,然后用来作为文件名存文件另外我设置断点之后,发现getlocaltime的结果就是错误的。 没有影响,除非你在多线程中调用GetSystemTime/GetLocalTime,但写同一个SYSTEMTIME
没有影响,除非你在多线程中调用GetSystemTime/GetLocalTime,但写同一个SYSTEMTIME
没有影响,除非你在多线程中调用GetSystemTime/GetLocalTime,但写同一个SYSTEMTIME
应该是写其他变量的时候覆盖了SYSTEMTIME结构。
你是用C++ Builder吗?
估计是某些数据溢出了,把SYSTEMTIME结构的年月覆盖了,检查与SYSTEMTIME结构相邻的变量。
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
int a,b[11];//本来是b[10],为判断哪句越界,故意声明为b[11]
srand((unsigned int)time(NULL));//按两次F11,等黄色右箭头指向本行时,调试、新建断点、新建数据断点,地址:&b[10],字节计数:4,确定。
while (1) {//按F5,会停在下面某句,此时a的值为10,b[10]已经被修改为对应0..4之一。
b[(a=rand()%11)]=0;
Sleep(100);
b[(a=rand()%11)]=1;
Sleep(100);
b[(a=rand()%11)]=2;
Sleep(100);
b[(a=rand()%11)]=3;
Sleep(100);
b[(a=rand()%11)]=4;
Sleep(100);
}
return 0;
}