C語言,內存錯誤——free():invalid next size(fast)

在項目開發中,程序報invalid next size錯誤,debug了很久。

由於我分配的內存只有4字節(malloc(sizeof(int))),程序運行過程中發生了越界賦值的操作,即在4字節以外的地址進行了賦值操作。這樣導致破壞了原本malloc的4個字節的內存,所以free()就失敗並報錯了。

C語言編程中,關於內存有幾點需要注意的:

1、malloc要和free配對,new和delete要配對(C++)

2、用malloc初試化的指針最好不要在中途修改該指針變量,因爲指針變量改變後,很容器導致free產生的未知錯誤,因爲指針變量所指向的內存已經不是原來malloc的那塊內存了。

3、注意對malloc的內存進行正確合理的使用,錯誤不規範的使用(如越界賦值)會破壞原來malloc出來的內存,導致內存錯誤等等(如free失敗)

c語言的內存錯誤並不是那麼可怕,仔細檢查,熟練之後就好很多了!

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