这两行代码有什么区别

时间:2019-08-23 19:30:01

标签: c++ c pointers malloc allocation

之间有什么区别

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

vs

int *ptr = new int[5];

指向一个指针以在内存中为5个整数创建一个点的指针的内存分配的最高的C版本是吗?那么底部是C ++的版本?它们在内存中出现的位置(如果有的话)。

1 个答案:

答案 0 :(得分:1)

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

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

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