gpt4 book ai didi

c++ double free or corruption (fasttop) -- 不确定错误在哪里

转载 作者:行者123 更新时间:2023-11-28 03:28:48 27 4
gpt4 key购买 nike

基于 valgrind,我相信我的错误源于这些人,因为错误发生在我将一个新集分配给另一个集之后。 Set Z -> A^B(返回 Set 的交集运算)。我只是不确定我做错了什么,任何帮助将不胜感激!

Set::~Set()
{
Cap = 0;
Num = 0;
delete [] Pool;
Pool = NULL;
}
Set::Set(const Set &A)
{
Cap = A.capacity();
Num = A.size();
Pool = A.Pool;
}
Set& Set::operator=(const Set &X)
{
Cap = X.capacity();
Num = X.size();
Pool = X.Pool;
return *this;
}

最佳答案

您有一个动态分配的数组 Pool,您在复制构造函数和赋值运算符中对其进行了浅层复制。因此,您将有多个对象试图删除同一个数组。

您需要对Pool 进行“深拷贝”,即创建一个新的动态分配数组,其中包含原始元素的拷贝。为此,您需要知道原始数组的大小。最简单的解决方案是改用 std::vector。那么您甚至不需要提供自己的复制构造函数和赋值运算符。编译器合成的就足够了。

关于c++ double free or corruption (fasttop) -- 不确定错误在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13182396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com