- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 329字
- 2020-10-30 17:56:42
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++中使用。
推薦閱讀
- Learning Cython Programming(Second Edition)
- Raspberry Pi Networking Cookbook(Second Edition)
- jQuery EasyUI網(wǎng)站開發(fā)實戰(zhàn)
- Learning AWS Lumberyard Game Development
- 編寫高質(zhì)量代碼:改善C程序代碼的125個建議
- TypeScript實戰(zhàn)指南
- MySQL數(shù)據(jù)庫基礎(chǔ)實例教程(微課版)
- Learning Network Forensics
- QGIS By Example
- Java程序設(shè)計入門
- ElasticSearch Cookbook(Second Edition)
- Python Interviews
- Clean Code in C#
- Raspberry Pi Robotic Projects
- Mastering JavaScript Promises