我正在从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,而是使用自动管理自己内存的对象.