如何释放分配的参数

how to free allocated parameter?

本文关键字:分配 参数 释放 何释放      更新时间:2023-10-16

我得到了这样的东西:

ClassA& ClassA::operator>>(char*& string) {
    string = (char*)malloc(size);
    //read something in that string then return
    return *this;
}

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

首先,使用"malloc"是不好的做法,在c++中(你应该使用new,即使它是为了创建一个字符数组;Use new char[size]);

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

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

正如在这里的另一个答案中提到的,使用string也可以解决您的问题(尽管,您需要重写调用该函数的代码)。

的另一种方法,可能是使用智能指针。但是,对于您在这里需要的东西来说,这可能过于复杂了(因为这意味着重写调用该函数的代码)。