std :: swap和memcpy之后的空闲内存

时间:2014-07-07 10:54:35

标签: c++ free swap memcpy

我有以下代码:

    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;

1 个答案:

答案 0 :(得分:0)

您只能将free准确传递给malloc。您的代码未显示data[i]来自哪里,但我敢打赌它不是malloc