在std::swap和memcpy之后释放内存

Free memory after std::swap and memcpy

本文关键字:之后 释放 memcpy 内存 std swap      更新时间:2023-10-16

我有以下代码:

    Data* t = (Data*)(malloc(len_part_ * sizeof(Data)));    
    memcpy(t, data_[i], len_temp_ * sizeof(Data));
    std::swap(t, data_[i]);
    free(t);

问题是在free(t)中有时发生"堆已损坏"错误。在这些时候,参数是:

sizeof(Data) = 8;
len_part_ = 24;
len_temp_ = 8;

信息:data_字段为Data**, Data定义为typedef std::pair<int,int> Data;

您只能将从malloc返回的内容准确地传递给free。你的代码没有显示data[i]来自哪里,但我敢打赌它不是malloc