
如圖,我在做串口通信時,想把每次接收到的資料按照時間的不同,每分鐘存一個txt,我用的是SYSTIME結構體,然后獲取時間,可是時間會出現例外值,請問有人遇到這種現象嗎?
uj5u.com熱心網友回復:
程式別的地方“踩了”SYSTIME結構體所在位置的記憶體。我猜。使用記憶體值改變斷點,找出是誰踩的。
記憶體值改變斷點參考下面:
#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;
}
uj5u.com熱心網友回復:
systemtime獲得的是無符號短整型也就是WORD型別,我用sprintf(str,"%d",st.wYear)來獲取年份的,是不是因為%d的緣故?uj5u.com熱心網友回復:
應該是這個記憶體被誤寫了,而且要看那個tm變數 前后有無memcpy 或者陣列操作uj5u.com熱心網友回復:
在獲取時間也就是getlocaltime之后有readfile操作。獲取時間之后我是傳給了另一個函式,另一個函式專門對時間和資料進行存檔案操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88149.html
標籤:基礎類
上一篇:執行緒通信問題
