c++ - 如何修复对象在被释放后可能修改的 malloc 错误
问题描述
我正在使用 new(malloc) 来 malloc 一个数组,但是有一个错误,即对象在被释放后被修改
void merge(int low, int high)
{
int *tmp = new int[high-low+1];
// int *tmp = (int*) malloc (sizeof(int) * (high-low+1));
int mid = (low + high) / 2;
int i = low, j = mid + 1, k = low;
while (i <= mid && j <= high)
{
if (A[i] < A[j]) tmp[k++] = A[i++];
else tmp[k++] = A[j++];
}
while(i <= mid) tmp[k++] = A[i++];
while(j <= high) tmp[k++] = A[j++];
for (int t = low; t <= high; t++) A[t] = tmp[t];
delete[] tmp;
// free(tmp);
}
malloc:释放对象 0x7fb880402ab0 的校验和不正确:可能在释放后修改。损坏值:0x300000000 malloc:*** 在 malloc_error_break 中设置断点进行调试
解决方案
错误可能是由于tmp[k++]
它超过了tmp
.
推荐阅读
- vue.js - Vue Cli错误:规则只能有一个资源源(提供资源和测试+包含+排除)
- apache-spark - 如何在 Spark SQL 中采用 Ranger 策略?
- typescript - 有没有办法为 TypeScript 接口生成/发出源映射?
- flutter - 无法使用 Dio 上传图像
- laravel - auth()->user() == $profileUser 没有返回 true,尽管它是 true
- assembly - 为什么函数末尾需要 mov rbp, rsp
- amazon-web-services - 更改 Redshift 视图以指向新表
- linux - 搜索值大于一定时间的日志
- r - 将边缘列表转换为图形不会保留值
- c# - 多个单独的 Swagger 文档:内部和外部