在项目开发中,程序报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语言的内存错误并不是那么可怕,仔细检查,熟练之后就好很多了!