野指標:乙個指標在free之後沒有被賦值成null。
造成野指標的原因:在函式free(p)中只是將p指標的值傳遞給了函式,僅僅是釋放了形參的值,實參的值並沒有改變,
並且malloc函式在作業系統分配的時候是順序分配(比如釋放了的p原本使用的位址為2000,
那麼下一次malloc分配的位址就是這個2000),如果繼續對p進行解引用的話,
會連同下一次動態分配的指標所指向的值一同改變。
舉個栗子:
#include
#include
int main (
void)/*
輸出結果:
-----------------
*p=3 *p2=3
*/
野指標問題
最近在看之前的 對之前的bug有些新的認識,這裡總結下,學疏才淺,跟大家分享下吧。首先是用到了乙個傳送函式 static int send fun uint16 t length,uint8 t data 需要根據不同的條件判斷傳送的資料 data 以下實現是錯誤的 int judge send f...
野指標問題
關於這一點本來是不想寫的,一直覺的是些旁枝末葉的東西,很容易就能掌握,或者說不會犯錯的地方,但這兩天敲 的時候就遇到了這樣的問題,或者說不容易犯錯的地方才最容易犯錯吧!下面切入正題 何為野指標,對乙個指向空位址的指標我們將其稱為野指標,即所指向的位址不能進行操作的指標 這兩天寫c 的時候就遇到了這個...
野指標相關問題
最近在學習並行程式設計時注意到了uaf use after free 問題,引發uaf問題的原因一般是因為在釋放了某個指標指向的記憶體後,並沒有將該指標置空,從而可以通過該指標非法地修改記憶體。以前因為一直都沒有寫過大型專案,也不曾特別關心安全問題,雖然知道在指標申請後手動置為null但一度以為在f...