这两行代码有什么区别

What is the difference between these two lines of code

有什么区别:

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

int *ptr = new int[5];

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

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

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

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