我有一个非常快速的问题:在动态内存方面,C ++中new[ ]
/ delete [ ]
与new
/ delete
有什么区别?
new[ ]
/ delete [ ]
不属于动态内存吗?
答案 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