來告訴大家 AddressSanitizer: stack-buffer-overflow on address 一般都是代碼哪裏出現了問題

通常C /C++ 編譯器 是對內存訪問是不添加邊界檢查的。有時候優於代碼錯誤,就有讀或者寫 操作了緩衝區外面的內存地址。這種錯誤一般都很難察覺。所以一旦編譯出現AddressSanitizer: stack-buffer-overflow on address 錯誤,首先就檢查自己代碼的邊界條件是否沒有控制住。

什麼是stack-buffer-overflow ? 

舉例來說: 

int a[10];

a[11] = 10; // stack-buffer-overflow

a[-1] = 10;//stack-buffer-underflow

 

什麼是head-buffer-overflow ? 

舉例來說:

int* x = malloc(10);
int n=x[11]; //heap-buffer-overflow

int n=x[-1] //heap-buffer-underflow


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章