ASan罗售,即Address Sanitizer,是一個(gè)適用于c/c++程序的動(dòng)態(tài)內(nèi)存錯(cuò)誤檢測(cè)器钩述,它由一個(gè)編譯器檢測(cè)模塊(LLVM pass)和一個(gè)替換malloc函數(shù)的運(yùn)行時(shí)庫(kù)組成寨躁,在性能及檢測(cè)內(nèi)存錯(cuò)誤方面都優(yōu)于Valgrind,你值得擁有牙勘。
ASan作為編譯器內(nèi)置功能职恳,支持檢測(cè)各種內(nèi)存錯(cuò)誤:
緩沖區(qū)溢出
① 堆內(nèi)存溢出
② 棧上內(nèi)存溢出
③ 全局區(qū)緩存溢出
懸空指針(引用)
① 使用釋放后的堆上內(nèi)存
② 使用返回的棧上內(nèi)存
③ 使用退出作用域的變量
非法釋放
① 重復(fù)釋放
② 無(wú)效釋放
內(nèi)存泄漏
初始化順序?qū)е碌膯?wèn)題