A a; // a存在栈上
A* a = new a(); // a存在堆中
以上两种方式皆可实现类的实例化,有无new的区别在于:
1 前者在栈中分配内存,后者在堆中分配内存
2 动态内存分配会使对象的可控性增强
3 大程序用new,小程序不加new,直接申请
4 new必须delete删除,不用new系统会自动回收内存
文章讨论了C++中使用new关键字在堆上实例化对象与在栈上声明对象的差异,包括内存分配位置、对象控制性和内存管理。new操作符需要配合delete释放内存,而栈上的对象由编译器自动管理。文章适合开发者了解动态内存分配的原理和最佳实践。
A a; // a存在栈上
A* a = new a(); // a存在堆中
以上两种方式皆可实现类的实例化,有无new的区别在于:
1 前者在栈中分配内存,后者在堆中分配内存
2 动态内存分配会使对象的可控性增强
3 大程序用new,小程序不加new,直接申请
4 new必须delete删除,不用new系统会自动回收内存

被折叠的 条评论
为什么被折叠?