这两行代码有什么区别
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.
在您给出的两个示例中,内存将按顺序分配。
有什么区别:
p = (int*) malloc (5*sizeof(int));
对
int *ptr = new int[5];
最上面的 C 版本的内存分配是指向一个指针以在内存中为 5 个整数创建一个点吗?那么最下面是C++的版本?它们出现在内存中的什么地方(如果出现的话)。
两者都分配大小字节的未初始化存储和 return 指向它的指针。这两个片段都适用于 C++,但 new
片段专用于 C++。两者的实现都取决于编译器。使用 malloc()
函数时,总是使用 free()
函数来释放内存。使用 new
运算符时,始终使用 delete
运算符来释放内存。切勿混用。
new
可以提供一些其他功能,例如重载和调用非原始类型构造函数。 See.
在您给出的两个示例中,内存将按顺序分配。