C ++ Munmap错误并在友元函数

时间:2017-09-09 00:41:16

标签: c++ function friend

这是我第一次在这里发帖,如果格式不正确,请道歉。无论如何,这段代码在过去的几个小时里只引起了我的问题。从我可以告诉它最终导致未指定的行为,因为当通过IDE运行时它可以工作,但是当在命令行上运行时它会导致munmap_chunk():无效的指针错误。

我已经调查了这个错误,并且一致认为这是因为两次释放内存造成的。但我删除了所有析构函数并删除了我的代码中的语句,以减少我的错误,没有任何帮助。

所以我的下一个想法是用这个友元函数分配内存是问题,并且创建了temp,在函数中分配了内存,当函数完成时,内存被释放,然后temp有它的析构函数调用,这导致另一个释放,这本质上是错误。

因此,我的想法是我必须找到一种方法来为这个数组分配内存,但我不知道如何这样做。有人可以拯救我吗?最糟糕的是,它将在今晚到期。

friend Chain operator+(const Chain &c1, const Chain &c2) {
    Chain<Object> temp;
    temp.size_= c1.size_ + c2.size_;
    temp.array_ = new Object[temp.size_];
    copy(c1.array_, c1.array_ + c1.size_, temp.array_);
    copy(c2.array_, c2.array_ + c2.size_, temp.array_ + c1.size_);
    return temp;
}

0 个答案:

没有答案