2

我只是在想当我们在 C++ 中使用free()with时会发生什么。new

如果我们使用free()withnew那么内存可以被释放。它只是不会调用析构函数。留下类似于悬空指针的行为。

我知道上面我们不应该使用free()with ,new因为它可能会破坏堆。

但我也想从概念上可视化行为。

4

2 回答 2

8

free在分配的内存上使用new是未定义的行为。不能保证new返回从malloc. (事实上​​,new[]通常不会。)

于 2012-08-30T19:07:29.673 回答
1

你根本不应该混合这些。new并且按原样delete配对。mallocfree

请记住,new应用程序可以完全重新定义的行为,并且可以使用与堆完全无关的分配策略。正因为如此,你不能依靠 .free生成的指针来做任何事情new。他们是两个不同的世界。

于 2012-08-30T19:07:39.667 回答