代码
int *a =(int*) malloc(sizeof(int)*12);
int *b = a+1;
错误
malloc: *** error for object 0x1007000c8: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
我的理解
应该是a被free之后,b free发现已经free过了!
那该怎么解决呢
你不手动调用free释放内存,编译器是不会帮你释放的啊,所以并不是多次释放冲突引起的问题。应该是某个指针调用free之后另外一个还在继续用,才造成的这个问题。找找哪里释放的这块地址,改到你a,b中最后一次使用的地方再调用。