3 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
更新澄清:問(wèn)題不在于陳舊,釋放或未初始化的指針; 相反,我正在實(shí)現(xiàn)一個(gè)從調(diào)用者獲取指針的API(如指向字符串的指針,文件句柄等)。調(diào)用者可以(有意或無(wú)意地)發(fā)送無(wú)效值作為指針。如何防止崩潰?
你無(wú)法進(jìn)行檢查。你根本無(wú)法檢查指針是否“有效”。你必須相信,當(dāng)人們使用帶指針的函數(shù)時(shí),那些人就會(huì)知道他們?cè)谧鍪裁础H绻麄儗?x4211作為指針值傳遞給你,那么你必須相信它指向地址0x4211。如果他們“意外地”擊中一個(gè)物體,那么即使你會(huì)使用一些可怕的操作系統(tǒng)功能(IsValidPtr或其他),你仍然會(huì)陷入一個(gè)錯(cuò)誤并且不會(huì)快速失敗。
開始使用空指針發(fā)信號(hào)通知這種事情并告訴你的庫(kù)的用戶,如果他們傾向于意外地傳遞無(wú)效指針,他們不應(yīng)該使用指針,嚴(yán)重:)

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
防止調(diào)用者發(fā)送無(wú)效指針導(dǎo)致的崩潰是制作難以找到的靜默錯(cuò)誤的好方法。
對(duì)于使用你的API的程序員來(lái)說(shuō),通過(guò)崩潰而不是隱藏它來(lái)獲取他的代碼是假的明確信息,這不是更好嗎?
- 3 回答
- 0 關(guān)注
- 757 瀏覽
添加回答
舉報(bào)