<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者:天雷君 時(shí)間:2018-11-30 來源:電子產(chǎn)品世界 收藏

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

          本文引用地址:http://www.ex-cimer.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++;

            }

            第二步,把數(shù)據(jù)位0或1這個(gè)‘大象’放到前面打開的‘冰箱’里,這是通過下面這個(gè)函數(shù)實(shí)現(xiàn)的。

            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);

            }

            }

            乍看下來,設(shè)計(jì)方案構(gòu)思縝密,程序代碼實(shí)現(xiàn)巧妙,設(shè)計(jì)和實(shí)現(xiàn)都堪稱天衣無縫。按下遙控器,射頻信號在空間汩汩流動(dòng),遙控接收板有序地把數(shù)據(jù)整齊碼好,踏著相同的節(jié)拍,大家一起嗨起來。

            3

            但是,理想是美好的,現(xiàn)實(shí)永遠(yuǎn)是骨感的。

          1543555728229384.jpg

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

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

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

            if(Rf_bit_count >= RF_RAWBIT_LEN){

            SetRfFrameComplete();

            }

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

            if(Rf_bit_count >= RF_RAWBIT_LEN){

            Rf_frame_times++;

            SetRfFrameComplete();

            }

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

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




          關(guān)鍵詞: 數(shù)組

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();