C++中,关于NEW关键字的使用!

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:44:46
比如说我有一个类Test.
我可以用 Test t 或者 Test *t = new Test();

1, 二种方法得到一个类实例,这二种方法有什么区别呢?
2, 我知道new 是动态内存分配!而不加new呢?就是静态分配了吗?
3, 另外,大家在平时用的时候都习惯用哪种方法呀?从性能和内存占用方面考虑哪种方法更好用一些呢?
4, 我记得好像听谁说过,不用NEW声明,对象实例是分配在栈中的!(难道一个类也要分配在栈中吗?)
5, 我用new关键字分配的对象,我不用delete删除它,编译器会自动帮我删除吗?而不会用NEW创建的呢?

1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。
2.不加new在堆栈中分配内存
3.大程序用new,小程序直接申请
4.只是把对象分配在堆栈内存中
5.new必须delete删除,不用new系统会自动回收内存

3. 在事先不能判断将要使用多少内存时。这主要是分配一组对象,如果只要单个对象,不需要使用。如果事先不知道会不会使用一个对象,可以先只声明一个指针,在需要用的时候在用new分配空间。
4 不用new,也可能在好几个地方分配内存,比如堆栈,静态储存区等等。
5. new和delete必需成对使用,否则会造成所谓的内存泄漏。

简单地说,前者对象实例的生成和销毁由系统自动控制,后者实例的生成和销毁由程序员自己控制。