如何修复对象在释放后可能修改的malloc错误

How to fix malloc error that object probably modified after being freed

本文关键字:修改 malloc 错误 何修复 对象 释放      更新时间:2023-10-16

我正在使用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的长度引起的。