我什么时候需要在C ++中使用malloc?

时间:2011-12-09 03:04:29

标签: c++ c qt qt4

如果我可以在C ++中创建一个QString,如:

QString s = "my string"; // or,
QString *s = new QString("my string");

然后,我什么时候需要使用malloc

4 个答案:

答案 0 :(得分:11)

您永远不需要在C ++中使用malloc

好的,既然我已经说过永远不会,一个例外就是当你使用C代码时,由于某种原因,你需要拥有一块内存所有权,然后调用{{ 1}}指向该内存的指针以释放它。

我之前从未见过(我通常不会使用C库而且我不知道这种情况有多常见),这只是一个人为的情况,我可以想到使用free会在哪里< em> not 是可选的,因为在malloc创建的内存上调用free是未定义的行为。

答案 1 :(得分:2)

几乎不需要在C ++中使用malloc

答案 2 :(得分:1)

从不!

malloc分配未初始化的内存。你很少需要在C ++中这样做。大多数情况下,您使用newdelete创建和销毁对象。

在某些情况下,您确实需要分配未初始化的内存,例如在实现动态大小的容器(例如std::vectorboost::optional时)。但是C ++的方式不是使用mallocfree而是使用

void* p = operator new(1000);
...
operator delete(p);

答案 3 :(得分:0)

C ++主要为您处理分配和释放,与C不同。

换句话说,您不应该使用malloc作为示例。