C中的Malloc功能

前端之家收集整理的这篇文章主要介绍了C中的Malloc功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从C转换到C.在C中,malloc函数有用吗?或者我可以使用“new”关键字声明它.例如:
class Node
{
    ...
}
...
Node *node1 = malloc(sizeof(Node));        //malloc
Node *node2 = new Node;                    //new

我应该使用哪一个?

解决方法

使用新的.您不应该在C程序中使用malloc,除非它与某些C代码交互,或者您有某种理由以特殊方式管理内存.

你的node = malloc(sizeof(Node))的例子是个坏主意,因为不会调用Node的构造函数(如果存在),以及后续的delete节点;会有不确定的结果.

如果你需要一个字节缓冲区而不是一个对象,你通常会想要做这样的事情:

char *buffer = new char[1024];

或者,最好是这样的事情:

std::vector<char> buffer(1024);

注意,对于第二个例子(使用std :: vector<>),不需要删除对象;当它超出范围时,它的内存将自动释放.您应该努力避免在C程序中使用new和malloc,而是使用自动管理自己内存的对象.

猜你在找的C&C++相关文章