c++ - 这两行代码有什么区别

标签 c++ c pointers malloc allocation

<分区>

有什么区别:

p = (int*) malloc (5*sizeof(int));

对比

int *ptr = new int[5];

最上面的 C 版本的内存分配是指向一个指针以在内存中为 5 个整数创建一个点吗?那么最下面是C++的版本?它们出现在内存中的什么地方(如果出现的话)。

最佳答案

两者都分配大小字节的未初始化存储并返回指向它的指针。这两个片段都适用于 C++,但 new 片段专用于 C++。两者的实现都取决于编译器。使用malloc() 函数时,始终使用free() 函数来释放内存。使用 new 运算符时,始终使用 delete 运算符来释放内存。切勿混用。

new 可以提供一些其他功能,例如重载和调用非基本类型构造函数。 See .

在您给出的两个示例中,内存将按顺序分配。

关于c++ - 这两行代码有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57632023/

相关文章:

c++ - 使用大括号表示法 C++ 填充动态数组

删除构造函数的 C++14 值初始化

c - 使用 dlopen() 对象时确定调用对象

c - 无论如何释放空指针或先检查?

C++ 指针 为什么?

pointers - 在汇编(emu8086)中进行内存寻址时,bp和si有什么不同?

c - 如何复制 char 指针数组的值?

c++ - 缓冲区到结构的转换

c++ - C(++) 和 Lua 清理内存

c++ - unique_ptr(std::nullptr_t) 和模板