gpt4 book ai didi

c++ - C++ 中的 Malloc 函数

转载 作者:可可西里 更新时间:2023-11-01 18:40:30 25 4
gpt4 key购买 nike

我正在从 C 过渡到 C++。在 C++ 中,malloc 函数有什么用吗?或者我可以只用“new”关键字声明它吗?例如:

class Node
{
...
}
...
Node *node1 = malloc(sizeof(Node)); //malloc
Node *node2 = new Node; //new

我应该使用哪个?

最佳答案

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

你的例子node = malloc(sizeof(Node))是个坏主意,因为 Node 的构造函数(如果存在)将不会被调用,随后的 delete node;会有未定义的结果。

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

char *buffer = new char[1024];

或者,最好是这样的:

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

请注意,对于第二个示例(使用 std::vector<> ),不需要 delete物体;当它超出范围时,它的内存将自动释放。你应该努力避免这两种情况 newmalloc在 C++ 程序中,而不是使用自动管理自己内存的对象。

关于c++ - C++ 中的 Malloc 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com