官术网_书友最值得收藏!

2.4.1 字符串處理

《C安全編碼標(biāo)準(zhǔn)》[Seacord 2008].“STR01-C.采用并實現(xiàn)一個管理字符串的一致計劃”建議選擇一種方法來處理字符串并在項目中始終如一地執(zhí)行。否則,決定權(quán)就落到了單個程序員身上,他們很可能采取不同、不一致的方法。可以根據(jù)字符串處理函數(shù)如何管理內(nèi)存將它們歸類。下面是3個基本模型:

·由調(diào)用者分配,由調(diào)用者釋放(C99.OpenBSD.C11 Annex K)

·由被調(diào)用者分配,由調(diào)用者釋放(ISO/IEC TR 24731-2)

·由被調(diào)用者分配,由被調(diào)用者釋放(C++std::basic_string)

第一個模型是否比第二個模型更安全這點存在爭議,反之亦然。第一個模型使得何時需要釋放內(nèi)存這點更加清晰,并且似乎更能防止泄漏,但第二個模型確保有足夠的內(nèi)存可用(除非調(diào)用malloc()失敗)。

第3種內(nèi)存管理模式,其中被調(diào)用者既分配又釋放內(nèi)存,它是三種解決方案中最安全的一種,但只能在C++中使用。

主站蜘蛛池模板: 望奎县| 蒲城县| 华阴市| 公主岭市| 阿拉善左旗| 开封县| 南投县| 渭南市| 许昌市| 宣城市| 香河县| 无为县| 平泉县| 丹巴县| 万安县| 滦南县| 伊宁市| 万州区| 南平市| 西盟| 浙江省| 合肥市| 大丰市| 宁河县| 洪江市| 平南县| 保定市| 凤庆县| 孟村| 康保县| 深圳市| 迁西县| 洛南县| 个旧市| 威远县| 图片| 拜泉县| 三台县| 健康| 镇坪县| 澎湖县|