可能原因:
1、多次释放同一内存区,需要检查代码,是否出现了对同一内存区释放两次以上的地方。
2、内存区溢出,malloc申请的内存区大小有限,如果操作不当,存储的数据大于内存区大小,在free的时候也会检测出来,报这个错误,如:
char* buf = malloc(5);
memcpy(buf, "123456", 6);
free(buf); //free时报此错误
实际项目中可能此类问题没法直观定位到,推荐使用gcc自带的 asan 检查内存错误。【解决】double free or corruption (!prev)
来源:清泛原创 2021-08-06 16:14:07 人气: 我有话说( 0 人参与)
*** glibc detected *** cupd: double free or corruption (!prev): 0x093b1208 ***可能原因:1、多次释放同一内存区,需要检查代码,是否出现了对同一内存区释放两
char* buf = malloc(5);
memcpy(buf, "123456", 6);
free(buf); //free时报此错误
实际项目中可能此类问题没法直观定位到,推荐使用gcc自带的 asan 检查内存错误。
上一篇:【解决】munmap_chunk(): invalid pointer
下一篇:【解决】C、C++混合编译link失败问题