如何释放分配的参数?

时间:2016-11-16 14:43:23

标签: c++ function parameters malloc free

我有这样的事情:

ClassA& ClassA::operator>>(char*& string) {
    string = (char*)malloc(size);

    //read something in that string then return
    return *this;
}

现在我想释放在此功能中分配的内存,而不会丢失存储的信息。如果我在返回之前释放它,我会丢失信息。    我试图在构造函数中释放它,但参数在那里或在另一个函数中是不知道的。那我该怎么办呢?我使用valgrind来检查内存泄漏,它向我指出了这个malloc。

1 个答案:

答案 0 :(得分:0)

首先,使用“malloc”是不好的做法,在c ++中(你应该使用new,即使它是用于创建一个char数组;使用new char [size]);

如果必须,将此指针添加到此类负责的指针列表中,并在此类的析构函数中,遍历该列表并为每个调用delete(如果您选择继续使用malloc,则为free)

另一个选项是调用delete / free,这个函数正在被使用(不是很干净,可能会导致内存泄漏,如你所见)。

如另一个答案中所述,使用字符串也可以解决您的问题(但是,您需要重写调用此函数的代码)。

另一种方式,可能是使用智能指针。但这可能会使你需要的东西复杂化(因为这意味着重写调用这个函数的代码)。