C語言系統內存被踩情況總結

C語言由於可以直接操作內存,給我們的編程帶來了便利,同時也帶來了內存寫越界之類的問題,常常造成我們的系統crash。下面總結了我在工作中碰到的導致內存越界的各種場景,以供分析此類問題時作個參考。

1、直接寫越界,包括1)棧空間變量寫越界覆蓋掉函數返回地址,導致函數返回時crash。2)全局變量寫越界,導致覆蓋掉符號表中排在這個全局變量後面的全局變量的值。

2、未初始化指針變量的值寫操作。

3、指針釋放了未置空,後續又被視爲仍有效而進行寫操作。

4、局部變量在生存期外被寫,如1)一個線程寫了另一個線程的局部變量。2)函數返回的局部變量被寫。

5、數組沒有初始化,接着調用strncpy只拷貝了覆蓋掉部分空間,剩餘空間可能是一個隨機值,之後繼續拿來使用。

(完)

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