free奔潰原因

2021-08-18 15:17:06 字數 294 閱讀 9830

執行時程式崩潰的問題,定位到了是free(p);這個語句出錯誤,找了半天資料解決了,現在寫下一點自己的總結。

這個問題有可能是以下4個原因構成,一一排查一般都可以解決:

釋放乙個空指標,這個就不用多說了,短點除錯不會也會列印吧 printf("%x",p);可以列印出16進製制數

重複釋放,這個問題也很好解決,在所有的釋放語句後都賦值指標為空,按照1來排查

釋放乙個非自己申請的記憶體,或者釋放的指標指向的地方不是本程序申請的。這個的排查方式就是在所有的malloc申請的時候列印出位址,看看和釋放的對應不對應。具體看1

程式奔潰的原因

常出現程式崩潰的幾種狀況1 記憶體越界 具體的 形式可為陣列下標越界和指標移動越界,在操作乙個陣列或是指標之前,要明確其邊界範圍,不應訪問不屬於系統分配的記憶體區域。2 指標為空 即此時通過指標訪問的記憶體位址為0,這個位址系統是不允許訪問的,系統也不會分配位址為0的記憶體給程式,這屬於一種特殊的記...

如何核心奔潰???

while 1 fork 和任何死迴圈都不能崩潰啊。只是無法跳出而已啊。空指標倒是讓記憶體溢位可以產生segmentation fault的錯誤,但是不會重啟。用alt sysrq c前需要先啟用這個功能 echo 1 proc sys kernel sysrq 也可以直接 echo c proc ...

iOS奔潰資訊收集

1,程式某處拋了乙個異常,卻未 獲,會導致std terminate函式被呼叫,std terminate呼叫std terminate handler型別的終止處理器,預設的終止處理器呼叫abort函式終止程式 2,程序收到乙個預設終止程序的訊號,大多數訊號的預設行為都是終止程序 針對第一種情況,...