我有一个用 delete 释放的对象,char*
它的析构函数中有一个用 free 释放的对象。我使用 free 的原因是因为我使用了 strdup 并malloc
创建了char
指针。我使用的原因malloc
是因为我在大多数代码路径中都使用了 strdup。这种情况会导致内存损坏吗?
问问题
1527 次
4 回答
5
不,如果您正确匹配调用,即free()
分配的内存malloc()
和分配delete
的内存new
,它将正常工作。
于 2009-10-28T08:40:46.950 回答
2
你在做什么是正确的。一个已经被new
ed 的类应该用 释放delete
,但是如果它拥有用malloc
(直接或间接)分配的内存,那么它应该用 释放该内存free
。
于 2009-10-28T08:42:16.390 回答
1
你的实现是正确的。您使用 free() 释放使用 malloc()(或 strdup())分配的内存,这正是要做的。
要求是您使用与用于分配该内存的原语匹配的原语释放内存。并且在您的实施中满足了此要求。
于 2009-10-28T08:55:40.277 回答
0
我发现出了什么问题。我通过一个方法将我的对象作为副本传递,并且它保留了char*
交叉;当函数退出时,该临时对象被删除,释放char*
. 现在我需要char*
方法退出后的方法,但现在已经消失了。两个*
和减一个固定它。
于 2014-08-11T08:47:13.263 回答