我有这样的事情:
ClassA& ClassA::operator>>(char*& string) {
string = (char*)malloc(size);
//read something in that string then return
return *this;
}
现在我想释放在此功能中分配的内存,而不会丢失存储的信息。如果我在返回之前释放它,我会丢失信息。 我试图在构造函数中释放它,但参数在那里或在另一个函数中是不知道的。那我该怎么办呢?我使用valgrind来检查内存泄漏,它向我指出了这个malloc。
答案 0 :(得分:0)
首先,使用“malloc”是不好的做法,在c ++中(你应该使用new,即使它是用于创建一个char数组;使用new char [size]);
如果必须,将此指针添加到此类负责的指针列表中,并在此类的析构函数中,遍历该列表并为每个调用delete(如果您选择继续使用malloc,则为free)
另一个选项是调用delete / free,这个函数正在被使用(不是很干净,可能会导致内存泄漏,如你所见)。
如另一个答案中所述,使用字符串也可以解决您的问题(但是,您需要重写调用此函数的代码)。
另一种方式,可能是使用智能指针。但这可能会使你需要的东西复杂化(因为这意味着重写调用这个函数的代码)。