国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C語(yǔ)言低級(jí)錯(cuò)誤案例

2019-11-11 06:48:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一,修改函數(shù)形參

這里寫(xiě)圖片描述

分析:在函數(shù)內(nèi)部不能改變指針指向的地址,。當(dāng)TrunkHBDeactive函數(shù)調(diào)用SetTimeHandle函數(shù)獲取指針的時(shí)候,實(shí)際上pTime的值根本沒(méi)有改變,始終為一個(gè)空指針。

注:對(duì)函數(shù)參數(shù)所在的存儲(chǔ)單元的直接修改不會(huì)作用在函數(shù)之外,但是對(duì)參數(shù)存儲(chǔ)單元中存放的地址指向的存儲(chǔ)單元的修改,則會(huì)在函數(shù)之外起作用。

總結(jié):函數(shù)內(nèi)部不能修改指針指向的地址 TimerHandle,但可改變指針指向得知的內(nèi)容 *TimerHandle:

這里寫(xiě)圖片描述

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

這里寫(xiě)圖片描述 分析:局部變量的內(nèi)容存放在堆棧內(nèi),其所占用的空間在函數(shù)返回后會(huì)自動(dòng)釋放,導(dǎo)致函數(shù)返回的指針指向了不可預(yù)知的內(nèi)存。故要注意不要返回局部變量堆棧中的地址。

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

這里寫(xiě)圖片描述

三,強(qiáng)制類(lèi)型轉(zhuǎn)換和字節(jié)序

問(wèn)題一:

這里寫(xiě)圖片描述

問(wèn)題二:

這里寫(xiě)圖片描述

分析:大端序存儲(chǔ)順序:高地址存儲(chǔ)低位字節(jié),低地址存儲(chǔ)高位字節(jié);小端序存儲(chǔ)順序:低地址存儲(chǔ)低位字節(jié),高地址存儲(chǔ)高位字節(jié)。函數(shù)對(duì)4字節(jié)序的修改只會(huì)修改2個(gè)字節(jié),在大端序cpu中修改高位字節(jié)導(dǎo)致錯(cuò)誤。

強(qiáng)制轉(zhuǎn)換靈活性/安全性總結(jié):

1,當(dāng)目的結(jié)構(gòu)的空間大于源結(jié)構(gòu)的空間時(shí),考慮越界問(wèn)題。 2,當(dāng)目的結(jié)構(gòu)的空間小于源結(jié)構(gòu)的空間時(shí),考慮字節(jié)序(大小端)問(wèn)題。 3,在把某些變量或數(shù)組或結(jié)構(gòu)強(qiáng)制轉(zhuǎn)換為另一種結(jié)構(gòu)體時(shí),需要考慮字節(jié)對(duì)齊問(wèn)題。 4,基本數(shù)據(jù)類(lèi)型(char,int,short,long)的強(qiáng)制類(lèi)型轉(zhuǎn)換比結(jié)構(gòu)體之間的強(qiáng)制類(lèi)型轉(zhuǎn)換更容易出現(xiàn)上訴情況。 5,不要將字符串常量強(qiáng)制轉(zhuǎn)換為字符指針(const char * —-> char *),以免導(dǎo)致改寫(xiě)只讀數(shù)據(jù)的段錯(cuò)誤。

四,變量溢出

問(wèn)題一:

這里寫(xiě)圖片描述

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

問(wèn)題二:

這里寫(xiě)圖片描述

當(dāng)ulTimeOutInMillSec非常大時(shí),乘以100有可能導(dǎo)致溢出,乘法的結(jié)果會(huì)變成一個(gè)很小的值。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳朔县| 成都市| 汶上县| 杭锦后旗| 祁门县| 大洼县| 宝山区| 大悟县| 新化县| 乐至县| 乐平市| 青海省| 宝兴县| 营口市| 重庆市| 长治市| 如东县| 马山县| 长沙市| 天等县| 广宁县| 双桥区| 朝阳市| 荔波县| 防城港市| 榆树市| 武川县| 高陵县| 内乡县| 察哈| 临武县| 汽车| 兖州市| 丘北县| 象州县| 许昌县| 苍山县| 离岛区| 炎陵县| 营山县| 红桥区|