如果我可以在C ++中创建一个QString,如:
QString s = "my string"; // or,
QString *s = new QString("my string");
然后,我什么时候需要使用malloc
?
答案 0 :(得分:11)
您永远不需要在C ++中使用malloc
。
好的,既然我已经说过永远不会,一个例外就是当你使用C代码时,由于某种原因,你需要拥有一块内存所有权,然后调用{{ 1}}指向该内存的指针以释放它。
我之前从未见过(我通常不会使用C库而且我不知道这种情况有多常见),这只是一个人为的情况,我可以想到使用free
会在哪里< em> not 是可选的,因为在malloc
创建的内存上调用free
是未定义的行为。
答案 1 :(得分:2)
几乎不需要在C ++中使用malloc
。
答案 2 :(得分:1)
从不!
malloc
分配未初始化的内存。你很少需要在C ++中这样做。大多数情况下,您使用new
和delete
创建和销毁对象。
在某些情况下,您确实需要分配未初始化的内存,例如在实现动态大小的容器(例如std::vector
和boost::optional
时)。但是C ++的方式不是使用malloc
和free
而是使用
void* p = operator new(1000);
...
operator delete(p);
答案 3 :(得分:0)
C ++主要为您处理分配和释放,与C不同。
换句话说,您不应该使用malloc
作为示例。