在項目開發中,程序報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語言的內存錯誤並不是那麼可怕,仔細檢查,熟練之後就好很多了!