类型malloc C ++
这个问题在这里已经有了答案:
何时以及为什么要在C ++中调用malloc需求?
总是在不分配给void *
,因为void *
不会将其隐式转换为其他指针类型,而是它在C中的方式。但真正的答案是, 您不应该首先在C ++中使用malloc
。
我不是建议你应该使用new
而不是malloc
。 现代C ++代码应该谨慎使用new
代码,或者尽可能避免使用new
代码。 你应该隐藏所有使用new
或使用非原始类型(如Xeo提到的std::vector
)。 由于我的经验有限,我没有资格向这个方向提供建议,但本文随着搜索“C ++避免新”应该有所帮助。 那么你会想看看:
编译你的C库。 编译你的C ++库。 让他们在使用它们的任何“主要”程序中表现出色。 要点是如果你维护一个混合的代码库,你可能想要从C ++的东西中分离纯C的东西。 否则你的C东西变成C ++的东西,只看起来像C.
首先,在几乎所有情况下,不要在C ++程序中使用malloc
,而应该选择new
因为它会确保在需要时调用构造函数等。
但是,如果出于遗留原因,您试图避免尽可能多的重写 - 您需要转换任何未分配给void*
指针的malloc
调用。