久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 牛人業話 > 數組越界真可怕,莫名就闖到了別人家

數組越界真可怕,莫名就闖到了別人家

作者:天雷君 時間:2018-11-30 來源:電子產品世界 收藏

  第一步,打開冰箱,即計算出該數據位的字節位置和位位置,如前所述,第n+1個數據位的字節位置為(n>>3),位位置為(n & 0x07),這是通過下面這個函數實現的,

本文引用地址:http://cqxgywz.com/article/201811/395096.htm

  void SetByteBitIdx(void)

  {

  uint16_t idx;

  idx = Rf_bit_count;

  Rf_rawbyte_idx = idx >> 3;

  Rf_rawbit_idx  = idx & 0x07;

  Rf_bit_count++;

  }

  第二步,把數據位0或1這個‘大象’放到前面打開的‘冰箱’里,這是通過下面這個函數實現的。

  void StoreRfBit (bool data)

  {

  SetByteBitIdx();

  if(1 == data){

  Rx_rawbit[Rf_rawbyte_idx] |= 1 << Rf_rawbit_idx;

  }else{

  Rx_rawbit[Rf_rawbyte_idx] &= ~(1 << Rf_rawbit_idx);

  }

  }

  乍看下來,設計方案構思縝密,程序代碼實現巧妙,設計和實現都堪稱天衣無縫。按下遙控器,射頻信號在空間汩汩流動,遙控接收板有序地把數據整齊碼好,踏著相同的節拍,大家一起嗨起來。

  3

  但是,理想是美好的,現實永遠是骨感的。

1543555728229384.jpg

  小心翼翼地把代碼寫好,反復檢查了幾遍,水平有限,著實檢查不出來任何毛病,那就是騾子是馬,拉出來溜溜吧。結果,一通測試下來,興奮勁還沒過去,一頭冷水便照頭潑了下來。按了遙控鍵,十次中倒有個兩三次不好使,“永不消逝的電波”就好像泥牛入海,轉眼間便走散了消息,不見了蹤跡。

  被風撕碎的一片片白云在遼闊高遠的天空中肆意飄蕩著,火紅的太陽炙烤著滾燙的大地。灑家背靠窗臺,一面感受著頑強得透過隔溫玻璃的陽光灑在脊背上的暖意,一邊在空調房中體味著心中的陣陣寒意。電波到底去哪兒了?

  灑家搜索的目光在電腦屏幕上不斷游離,心中條分縷析,早把各行代碼都當成了嫌疑,最后,目光定格在判斷接收到一幀完整的報文的語句那里:

  if(Rf_bit_count >= RF_RAWBIT_LEN){

  SetRfFrameComplete();

  }

  基本上,鑰匙每短按一次,就會發送三幀報文,既然遙控不好使,大抵可以確認中間存在漏報文的情形,為了驗證這種猜測,灑家加了一條測試語句:

  if(Rf_bit_count >= RF_RAWBIT_LEN){

  Rf_frame_times++;

  SetRfFrameComplete();

  }

  顯然,短按一次,Rf_frame_times應該為3,短按n次,Rf_frame_times應該為(n*3)。

  馬不停蹄地測試下來,果不其然,短按過十次后,Rf_frame_times的值不到30。難道是報文解析程序出了問題?




關鍵詞: 數組

評論


相關推薦

技術專區

關閉