新的[] / delete []与C ++中的new / delete之间的区别

时间:2015-02-21 22:01:40

标签: c++ dynamic dynamic-memory-allocation delete-operator

我有一个非常快速的问题:在动态内存方面,C ++中new[ ] / delete [ ]new / delete有什么区别?

new[ ] / delete [ ]不属于动态内存吗?

3 个答案:

答案 0 :(得分:2)

new为单个项分配内存并调用其构造函数,delete调用其析构函数并释放其内存。

new[]为一个项目数组分配内存并调用它们的构造函数,delete[]调用它们的析构函数并释放数组内存。

答案 1 :(得分:1)

两种内存分配机制都适用于动态内存。前者创建/销毁单个对象,第二个创建/销毁运行时大小的对象数组。这就是区别。

除此之外,这两种机制是两个完全独立的独立动态内存管理机制。例如。使用new[]分配由1个元素组成的数组并不等同于简单地使用new

答案 2 :(得分:0)

两者之间的区别在于,带[]的那些是数组的。

new关键字的区别并不明显,因为没有错误

int *i = new int;
Object *array = new Object[100];
然而,你应该做出shure来调用好的一个来使shure析构函数被称为应该

delete i; // ok
delete[] array; //ok
delete array; // Careffull, all destructors may not be called