1. 程式人生 > >C 語言執行free()釋放記憶體時 報錯

C 語言執行free()釋放記憶體時 報錯

今天遇到了一個問題。先用malloc()分配一定大小的記憶體,然後在主函式最後要對這些記憶體進行釋放。呼叫free函式,執行報錯。單步除錯 執行free()後的報錯如圖 1所示。

最終發現我是這樣做的:例如 分配10個元素記憶體,我對這10個元素進行了賦值,最後是呼叫了free()函式,報錯!!!

如果我分配10個元素的記憶體,只對9個(只要小於10就行)元素進行賦值,再呼叫free()函式,就不會報錯了!!

好神奇,雖然問題解決了,但是不知道原理。希望有懂這方面的給解釋一下。感謝了!謝謝。