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

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

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

2019-11-11 05:55:54
字體:
供稿:網(wǎng)友

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

這里寫圖片描述

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

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

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

這里寫圖片描述

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

這里寫圖片描述 分析:局部變量的內(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)容仍然是有效的。

這里寫圖片描述

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

問題一:

這里寫圖片描述

問題二:

這里寫圖片描述

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

四,變量溢出

問題一:

這里寫圖片描述

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

問題二:

這里寫圖片描述

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 英吉沙县| SHOW| 大竹县| 怀来县| 蒲江县| 崇阳县| 霍邱县| 神农架林区| 崇州市| 香港| 安陆市| 蓝山县| 息烽县| 正定县| 于田县| 鄂州市| 盖州市| 太谷县| 泸西县| 梅州市| 宜春市| 疏附县| 成武县| 乐山市| 高邑县| 杭锦后旗| 平南县| 乐清市| 安庆市| 湘乡市| 南召县| 荆州市| 南充市| 古田县| 萍乡市| 揭西县| 六枝特区| 开封市| 桐庐县| 绵竹市| 双峰县|