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

2.4.1 字符串處理

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

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

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

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

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

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

主站蜘蛛池模板: 洱源县| 渑池县| 博湖县| 昌乐县| 瑞昌市| 汨罗市| 治多县| 措勤县| 会同县| 永城市| 清苑县| 福贡县| 舒城县| 金阳县| 商丘市| 汉沽区| 尖扎县| SHOW| 资阳市| 巴马| 旌德县| 红原县| 西贡区| 海门市| 万宁市| 宝山区| 新干县| 巫山县| 华亭县| 东宁县| 沙洋县| 石首市| 雷州市| 辰溪县| 常宁市| 华容县| 临澧县| 禹州市| 南宁市| 宁津县| 武陟县|