1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。
2.不加new在堆栈中分配内存
3.大程序用new,小程序直接申请
4.只是把对象分配在堆栈内存中
5.new必须delete删除,不用new系统会自动回收内存
3. 在事先不能判断将要使用多少内存时。这主要是分配一组对象,如果只要单个对象,不需要使用。如果事先不知道会不会使用一个对象,可以先只声明一个指针,在需要用的时候在用new分配空间。
4 不用new,也可能在好几个地方分配内存,比如堆栈,静态储存区等等。
5. new和delete必需成对使用,否则会造成所谓的内存泄漏。
简单地说,前者对象实例的生成和销毁由系统自动控制,后者实例的生成和销毁由程序员自己控制。
new是从堆中动态分配内存的运算符
与之相对应的是delete(释放内存)
char
*buf;
buf
=
new
char[100];
//alloc
delete
[]buf;
//release