麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C語言低級錯誤案例

2019-11-11 04:48:07
字體:
來源:轉載
供稿:網友

一,修改函數形參

這里寫圖片描述

分析:在函數內部不能改變指針指向的地址,。當TrunkHBDeactive函數調用SetTimeHandle函數獲取指針的時候,實際上pTime的值根本沒有改變,始終為一個空指針。

注:對函數參數所在的存儲單元的直接修改不會作用在函數之外,但是對參數存儲單元中存放的地址指向的存儲單元的修改,則會在函數之外起作用。

總結:函數內部不能修改指針指向的地址 TimerHandle,但可改變指針指向得知的內容 *TimerHandle:

這里寫圖片描述

二,返回局部變量(堆棧)的地址

這里寫圖片描述 分析:局部變量的內容存放在堆棧內,其所占用的空間在函數返回后會自動釋放,導致函數返回的指針指向了不可預知的內存。故要注意不要返回局部變量堆棧中的地址。

修改方法如下:傳入一個已經由上層函數分配好空間的指針,并在函數內部修改指針指向的內容。這樣就可以確保函數返回后,pData指針指向的內容仍然是有效的。

這里寫圖片描述

三,強制類型轉換和字節序

問題一:

這里寫圖片描述

問題二:

這里寫圖片描述

分析:大端序存儲順序:高地址存儲低位字節,低地址存儲高位字節;小端序存儲順序:低地址存儲低位字節,高地址存儲高位字節。函數對4字節序的修改只會修改2個字節,在大端序cpu中修改高位字節導致錯誤。

強制轉換靈活性/安全性總結:

1,當目的結構的空間大于源結構的空間時,考慮越界問題。 2,當目的結構的空間小于源結構的空間時,考慮字節序(大小端)問題。 3,在把某些變量或數組或結構強制轉換為另一種結構體時,需要考慮字節對齊問題。 4,基本數據類型(char,int,short,long)的強制類型轉換比結構體之間的強制類型轉換更容易出現上訴情況。 5,不要將字符串常量強制轉換為字符指針(const char * —-> char *),以免導致改寫只讀數據的段錯誤。

四,變量溢出

問題一:

這里寫圖片描述

分析:ucCount不可能大于)xFF,導致死循環。故要注意,使用循環變量不能使用UC類型(unsigned char),最好使用US(unsigned short)或UL(unsigned long),避免循環邊界值大于255導致死循環。

問題二:

這里寫圖片描述

當ulTimeOutInMillSec非常大時,乘以100有可能導致溢出,乘法的結果會變成一個很小的值。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美精品黄色 | 伦一区二区三区中文字幕v亚洲 | 黑人日比视频 | 久久久成人免费视频 | 亚洲精品一二三区 | 午夜精品老牛av一区二区三区 | 一本色道久久久888 国产一国产精品一级毛片 国产精品高潮视频 | 99seav| 在线亚洲免费 | 天天躁狠狠躁夜躁2020挡不住 | 特片网久久 | h视频在线观看免费 | 毛片哪里看| 国产日韩免费观看 | 成人免费乱码大片a毛片视频网站 | 欧美一级黄色录像片 | 黄色作爱视频 | 深夜福利视频免费观看 | 免费黄色短视频网站 | 国产精品午夜小视频观看 | 鸳鸯谱在线观看高清 | 黄色av网站在线观看 | 一级视频在线播放 | 国产一级片91 | 成人羞羞国产免费游戏 | 国产免费一区二区三区最新不卡 | 欧美日韩在线播放一区 | av免费大全 | 一级做a爱视频 | 成人性生活视频在线观看 | 中文字幕在线视频日本 | 视频一区二区国产 | 中国精品久久 | 欧美一级一区二区三区 | 日本一级黄色毛片 | 免费一级毛片在线播放不收费 | 免费在线观看国产精品 | 欧美成人精品一区二区 | 欧美成人免费tv在线播放 | 看免费的毛片 | a一级黄色大片 |