網(wǎng)站業(yè)務(wù)費(fèi)如何做記賬憑證優(yōu)化分析
https://en.cppreference.com/w/cpp/string/basic_string/c_str
https://sourceforge.net/p/cppcheck/wiki/ListOfChecks/
- common mistakes when using string::c_str()
string的這個(gè)成員是返回c類型的一個(gè)字符數(shù)組指針。但是這個(gè)指針?biāo)鶎?duì)應(yīng)的地址有賴于string對(duì)象的生命周期。所以如果返回一個(gè)函數(shù)內(nèi)的局部string對(duì)象的指針,就是危險(xiǎn)的。如果是危險(xiǎn)的有沒(méi)有靜態(tài)代碼檢查工具可用幫助來(lái)檢查這種書寫的問(wèn)題。
這里需要注意的一個(gè)問(wèn)題是在gcc的4.8版本是可用隱藏這個(gè)問(wèn)題,但是到了8.5這個(gè)版本,就不再隱藏了。所以對(duì)生命周期比較長(zhǎng)的c++工程來(lái)說(shuō),這是一個(gè)非常大的挑戰(zhàn)。因?yàn)樵瓉?lái)這么錯(cuò)誤使用也沒(méi)有問(wèn)題,那得有多少處這種錯(cuò)誤使用呢?
_CharT*_M_data() const _GLIBCXX_NOEXCEPT{ return _M_dataplus._M_p; }