【解决】double free or corruption (!prev)

清泛原创
*** glibc detected *** ./cupd: double free or corruption (!prev): 0x093b1208 ***
可能原因:
1、多次释放同一内存区,需要检查代码,是否出现了对同一内存区释放两次以上的地方。
2、内存区溢出,malloc申请的内存区大小有限,如果操作不当,存储的数据大于内存区大小,在free的时候也会检测出来,报这个错误,如:
char* buf = malloc(5);
memcpy(buf, "123456", 6);
free(buf);  //free时报此错误
实际项目中可能此类问题没法直观定位到,推荐使用gcc自带的 asan 检查内存错误。

asan 内存跟踪

分享到:
评论加载中,请稍后...
回到顶部