我有一个对象,我可以使用delete释放它,它有一个 char * ,它在析构函数中被释放。我使用free的原因是因为我在创建 char 指针时使用了strdup和 malloc 。我使用 malloc 的原因是因为我在大多数代码路径中都使用了strdup。这种情况会导致内存损坏吗?

有帮助吗?

解决方案

不,如果你正确匹配调用,即 free() malloc() delete 分配的内存,用于分配的内存>新,它会正常工作。

其他提示

你在做什么是正确的。已经 new ed的类应该使用 delete 取消分配,但是如果它拥有使用 malloc (直接或间接)分配的内存那么它应该用 free 解除内存。

您的实施是正确的。你使用free()释放用malloc()(或strdup())分配的内存,这正是要做的事情。

要求是使用与用于分配该内存的原语匹配的原语释放内存。这个要求在您的实施中得到满足。

我弄清楚出了什么问题。我通过方法传递我的对象作为副本,并保持 char * ;当函数退出时,该临时对象被删除,释放 char * 。现在我退出方法后需要 char * ,但现在已经消失了。两个 * 和减去一个修复它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top